ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

۱۱۹ مطلب با موضوع «Web Development Teams :: MVC» ثبت شده است

fluent API در Code First

بسم الله الرحمن الرحیم

fluent API

در MVC برای ایجاد روابط بین جداول می توانید از fluent API استفاده کنید، این روش برای کد نویسی و طراحی دیتابیس به روش Code First می باشد:

One-to–Zero-or-One (روابط یک به یک)

modelBuilder.Entity<OfficeAssignment>() 
    .HasKey(t => t.InstructorID);

به رابطه بالا One-to–Zero گفته می شود زیرا شما فقط کلید اصلی جدول را مشخص کرده اید آن را به هیچ جدول دیگری ارتباط نداده اید.

modelBuilder.Entity<OfficeAssignment>() 
    .HasRequired(t => t.Instructor)
    .WithOptional(t => t.OfficeAssignment);

در این رابطه ما یک رابطه One-to-One ایجاد کرده ایم. در این رابطه سمت OfficeAssignment اختیاری است.

برای اجباری کردن هر دو سمت در یک رابطه یک به یک می توانید به صورت زیر عمل کنید:

modelBuilder.Entity<OfficeAssignment>() 
    .HasKey(t => t.InstructorID);
 
modelBuilder.Entity<Instructor>()
    .HasRequired(t => t.OfficeAssignment)
    .WithRequiredPrincipal(t => t.Instructor);

ادامه مطلب...

خطای cycles or multiple cascade paths

بسم الله الرحمن الرحیم

خطای زیرا شاید خیلی از شما دوستان عزیز نیز مشاده کردید:

Introducing FOREIGN KEY constraint 'FK_dbo.aspnet_UsersInRoles_dbo.aspnet_Users_UserId' on table 'aspnet_UsersInRoles' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors

برای حل این مشکل می توانید از Fluid API استفاده کنید،

در این مثل اگر من کد زیر را به Context خود اضافه کنم مشکل بالا برطرف خواهد شد:

protected override void OnModelCreating( DbModelBuilder modelBuilder )
{

        modelBuilder.Entity<aspnet_UsersInRoles>().HasMany(i => i.Users).WithRequired().WillCascadeOnDelete(false);
}

همچنین با استفاده از این کد می توانید تمامی CASCADE DELETES ها را از بین ببرید:

modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

اینم مشکل زمانی رخ می دهد که شما در طراحی دیتابیس خود یک چرخه یا Loop ایجاد کرده اید مانند تصویر زیر:

multiple cascade

اگر به متن خطای بالا دقت کنید مشاهده خواهید کرد که عبارت may cause cycles or multiple cascade paths قید شده است، همان طور که خدمتتان عرض کردم، اگر در طراحی دیتابیس شما چندین جدول را به صورت بالا طراحی کنید که با یکدگیر در ارتباط باشند و این ارتباط به صورت یک چرخه شود، و سعی کنید بر روی این چرخه CASCADE ایجاد کنید، SQL Server نمی تواند متوجه بشود که چطور فرایند بروز رسانی Update CASCADE یا حذف Delete CASCADE شما را مدیریت کند زیرا هر یک از این جداول بر روی یکدیگر تاثیر می گذارند و در صورتی که فرایند CASCADE آغاز شود نقطه پایانی وجود نخواهد داشت.

Delete CASCADE و Update CASCADE

برای حل این مشکل می توانید به صورت زیر عمل کنید:

1- فرایند CASCADE را غیر فعال کنید (در صورت غیر فعال کردن باید این فرایند را به صورت Manually مدیریت کنید)

2- Relation را حذف کنید (در صورت حذف کردن باید این فرایند را به صورت Manually مدیریت کنید)

طراحی دیتابیس

در چنینی شرایطی معمولا طراح دیتبیس اشتباهی را مرتکب شده است، پس بهتر است از او بخواهید تا دیتابیس خود را مجددا بررسی کنید، زیرا مدیریت کردن راه حل های بالا که قید شد کمی دقت لازم دارد

انشالله در اولین فرصت روش های ایجاد Relation را در MVC معرفی خواهم کرد

Strongly typed

بسم الله الرحمن الرحیم

Strongly typed

زبان های Strongly typed به شما اجازه نمی دهند که از یک نوع به نام یک نوع دیگر استفاده کنید. مثلا string به int

در Strongly typed به صورت اتوماتیک یک نوع به نوع دیگر تبدیل نمی شود. مثلا در زبان Perl می توانید یک رشته

شامل "123" در یک numeric قرار دهید و این به صورت اتوماتیک تبدیل به 123 می شود اما زبان های strongly typed این کار را انجام نمی دهند مثلا python یک زبان strongly typed است.

طبیعتا خطاهای زیادی را در هنگام کار کردن با سی شارپ مخصوصا LINQ در ارتباط با strongly typed مشاهده کردید:

مثال

var answer = 1 * "1";

این دستور اجرا نمی شود، بلکه شما باید خودتان به صورت صریح تبدیل نوع را انجام دهید.
اما در PHP دستور زیر اجرا می شود:

$x = "3" * 1; // is correct in php

استفاده از یک تابع کنترلر در View

بسم الله الرحمن الرحیم

طبیعتا شما تمامی توابع خود را کلاس های Common  نمی نویسید و مکن است بخواهید یک تابع ساده را که در Controller نوشته شده است در یک view استفاده کنید. برای استفاده از توابع در View  می توانید به صورت زیر عمل کنید:

تابع زیر در کنترلر نوشته شده است:

public int getClientID(string login)

    {
        var context = new MyEntity(new Uri("host/MyWCF.svc/"));

        var userID = from persons in context.PERSON
                     where persons.LOGIN == login
                     select persons.USER_ID;

        int uID = userID.First();
        var cli = from client in context.CLIENT
                  where client.USER_ID == uID
                  select client.CLIENT_ID;
        int cliID = cli.First();
        return cliID;
    }


می توان این تابع را به صورت زیر فراخوانی کرد اما با Error  مواجه خواهید شد

Client : @{ ((HomeController)(this.ViewContext.Controller)).getClientID(User.Identity.Name); }

خطایی که پس از اجرای این دستور دریافت می کنید به صورت زیر است:

Can only specify query options (orderby, where, take, skip) after last navigation

At line int uID = userID.First();

راه ساده ای که قبلا نیز شما از آن حتما استفاده کرده اید به صورت زیر است:

@Html.Action("Home","getClientID", new {login=User.Identity.Name})

بروز رسانی دیتابیس و خطا One or more validation errors were detected during model generation

بسم الله الرحمن الرحیم

بروز خطای

An exception of type 'System.Data.Entity.ModelConfiguration.ModelValidationException' occurred in EntityFramework.dll but was not handled in user code

 Additional information: One or more validation errors were detected during model generation:

 

 یا خطای

One or more validation errors were detected during model generation:

پس از اجرای کد زیر

db.Database.Initialize(true);

 

 برای رفع این خطا کافی است که پایگاه داده خود را با استفاده از دستور

Update-database –force

بروز نمایید.

این خطا به این دلیل است که اگر Migration بخواهد جداول شما را تغییر دهد اطلاعات شما به دلیل حذف شدن فیلد یا فیلدهایی از بین خواهد می رود؛ به همین دلیل این کار را بر عهده خودتان قرار می دهد (سلب مسئولیت )

آموزش Asp.net Identity

بسم الله الرحمن الرحیم

برای شروع کار Visual Studio را باز کنید سپس New-> project را انتخاب کنید و در پنجره باز شده مانند زیر NET framework 4.5 را انتخاب کنید و سپس بر روی گزینه ASP.NET Web Application  کلیک کنید.

Asp.net Identity

حال گزینه Emprty را انتخاب کنید و سپس نوع پروژه را از بخش پایین MVC انتخاب نمایید تا پروژه شما ایجاد شود.

آموزش Asp.net Identity

حال پروژه شما ایجاد شده است و کافی است در پنجره Package Manager Console دستور زیرا برای ساخت یک پروژه ASP.NET Identity ایجاد کنید.

Install-Package Microsoft.AspNet.Identity.Samples -Pre 

مدت زمان زیادی را باید منتظر بمانید زیرا تمامی package های زیر توسط این دستور نصب خواهد شد

bootstrap (≥ 3.0.0)

Microsoft.Aspnet.Identity.Core(≥ 2.1.0-alpha1)

Microsoft.Aspnet.Identity.EntityFramework(≥ 2.1.0-alpha1)

Microsoft.Aspnet.Identity.Owin(≥ 2.1.0-alpha1)

Newtonsoft.Json(≥ 5.0.6)

Microsoft.Aspnet.Mvc(≥ 5.1.1.0)

Microsoft.Aspnet.Web.Optimization(≥ 1.1.3)

jQuery(≥ 1.10.2)

jQuery.Validation(≥ 1.11.1)

Modernizr
(≥ 2.6.2)

Microsoft.Owin.Host.SystemWeb
(≥ 2.1.0)

Microsoft.Owin.Security
(≥ 2.1.0)

Microsoft.Owin.Security.Facebook(≥ 2.1.0)

Microsoft.Owin.Security.Cookies(≥ 2.1.0)

Microsoft.Owin.Security.Google(≥ 2.1.0)

Microsoft.Owin.Security.Twitter
(≥ 2.1.0)

Microsoft.Owin.Security.MicrosoftAccount(≥ 2.1.0)

Microsoft.jQuery.Unobtrusive.Validation
(≥ 3.1.1)

Respond
(≥ 1.2)

اگر خطایی در ارتباط با Timeout در خصوص پایین بودن سرعت اینترنت خود دریافت کردید مجددا دستور بالا را اجرا کنید تا فایلهای دانلود نشده، دانلود شوند، نگران نباشید فایل ها بر روی یکدیگر جایگزین خواهد شد.

حال به سادگی می توانید کد های مایکروسافت را برای استفاده از ASP.NET Identity بررسی کنید و بیشتر با این معماری آشنا شوید.

در بخش دیگر این معماری را به صورت کامل بررسی خواهیم کرد.

Entity Farmework و Code First

بسم الله الرحمن الرحیم

 

برای طراحی پایگاه داده به وسیله Entity Farmework  و Code First بهتر است این چند نکته را رعایت فرمایید:

 

بهتر است از نام Id به عنوان نام تمامی کلید های اصلی جداول استفاده کنید هر چند در بحث

convention over configuration این نکته مورد قبول است اما چیزی را که همه آن را به عنوان یک قرارداد نانوشته قبول دارند را عوض نکنید تا برای انجام کار توضیحاتی لازم نباشد.

بهتر است از نوع GUID برای کلید های اصلی جداول استفاده کنید. نوع int از لحاظ واکشی اطلاعات سریعتر است زیرا مقایسه عددی سریعتر از مقایسه رشته ای است.

باید در نظر داشته باشید در جداولی مثل شهر، استان، کشور می توانید از نوع int برای کلید اصلی استفاده کنید و هیچ مشکلی نخواهد بود اما بهتر است برای جداول اطلاعاتی که شماره ها بسیار ارزشمند هستند و بهتر است در کل دیتابیس عدد منحصر به فرد باشد از نوع GUID استفاده شود.

بهتر است نام کلیدهای خارجی یک نام از جدول + کلمه ای دی باشد:

مثلا: ProductId

برای تعیین نامی مشخص برای ذخیره property ها در دیتابیس می توانید به صورت زیر عمل کنید:

 

 [Column(“ProductId", TypeName="Guid")] 

 

با توجه به اینکه در MVC به صورت پیش فرض اگر Maxlength برای یک Property String تعیین نشود nvarchar(MAX) در دیتابیس در نظر گرفته می شود، لذا برای تمامی Property مقدار Maxlength را تعریف کنید مگر در شرایطی که نیاز به رشته های طولانی دارید.

با توجه به نحوه ذخیره سازی رشته ها در SQL Server ، اگر یک رشته می تواند در نوع nvarchar(300)  ذخیره شود از این نوع استفاده کنید.

با توجه به اینکه در Entity Framework 6 از روی نوع enum فیلد مناسب در دیتابیس ساخته می شود اما بهتر است فیلدهای از نوع enum به صورت int تعریف شوند و شما خودتان نوع بازیابی شده از دیتابیس را به enum تبدیل کنید.

مثلا

Public int CustomerType {get; set;};

 در نام گذاری property ها این نکته را در نظر داشته باشید که نباید از کلمات کلیدی (SQL Server,Oracle,…) استفاده کنید

مثلا: [Order]

 

بازیابی دیتابیس (Restore) به وسیله EntityFarmework

بسم الله الرحمن الرحیم

در پروژه های MVC شما نیاز خواهید پیدا کرد که دیتابیسی که به وسیله Entity Framework (معمولا در روش Code First) تغییر پیدا کرده است را به حالت قبل بازیابی کنید.

به ازای هر بار درخواست تغییر دیتابیس توسط EF یک شماره منحصر به فرد ایجاد می شود که می توانید در دیتابیس خود در تیبل Migration__  این پارت ها را مشاهده کنید.

برای برگرداندن دیتابیس خود به مرحله قبل می توانید به صورت زیر عمل کنید:

Update-Database -Target 2556

2556 شماره حالتی است که قبل از اعمال تغییرات ثبت شده بوده است.

برای رفتن اولین مرحله نیز می توانید به صورت زیر عمل کنید:

Update-Database -Target 0



برطرف کردن مشکل LINQ to Entities does not recognize

بسم الله الرحمن الرحیم

Server Error in '/' Application.


LINQ to Entities does not recognize the method 'EduOnline' method, and this method cannot be translated into a store expression.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

این خطا زمانی رخ می دهد که شما می خواهید یک دستور مشابه دستور زیر اجرا کنید:

db.Accounts.Where(m => m.AccountType == Enum.AccountTypes.Admin

برای حل این مشکل کافی است که کد خود را به صورت یک عبارت مشخص قابل بررسی توسط LINQ تبدیل کنید، مثلا در اینجا می توانید به صورت زیر و خیلی ساده کد خود را بنویسید و مشکل خود را حل نمایید:

db.Accounts.Where(m => m.AccountType == (int)Enum.AccountTypes.Admin)

در اینجا شما با تبدیل عبارت خود به یک به عبارت قابل مقایسه برای LINQ این مشکل را حل کرده اید

اضافه کردن فیلد nullable در دیتابیس با EF

بسم الله الرحمن الرحیم

اگر بخواهید پراپرتی زیر را به صورت nullable در پایگاه داده ذخیره کنید

[Required]
public int somefield {get; set;}

می بابیست کد خود را به صورت زیر تغییر دهید

[Required]
public int? somefield {get; set;}

علامت "؟" بعدر از نوع متغییر باعث می شود که این متغییر مقدار null را نیز بپذیرد.

همچنین با استفاده از روش Fluid API می توانید اینکار را انجام دهید:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();            
        base.OnModelCreating(modelBuilder);
}

آموزش برنامه نویسی سریع

ّبسم الله الرحمن الرحیم

بسیاری از کارهایی که ما در پروژه ها انجام می دهیم تکراری است از نوشتن یک کد ساده تا نوشتن یک کلاس و حتی خود یک پروژه!!

برای افزایش سرعت برنامه نویسی و تولید نرم افزار باید شما مجموعه ای از ابزار های مفید را برای خود ایجاد نمایید.

در این آموزش شما را با یک روش ساده برای افزایش نوشتن توابع و متدهای تکراری آشنا خواهم کرد

همه شما حداقل یک بار اینگونه توابع را نوشته اید

 

public void MyMethod()
        {
            try
            {

            }
            catch (Exception exception)
            {
                throw new Exception(exception.Message);
            }
            finally
            {

            }
       }

مثل همیشه مختصر و مفید، می خواهیم کاری انجام دهیم تا دیگر هیچ وقت اینگونه توابع را ننویسیم.

در ابتدا برای آموزش، فکر کنید میخواهید یک حلقه for بنویسید برای این کار، من راه بهتری سراغ دارم.

ابتدا کلمه for را بنویسید و سپس دو بار کامند TAB را بر روی کیبورد خود فشار دهید (یک حلقه for کامل نوشته شد).

فکر کنید می خواهید کد زیر را بنویسید:

public string StartSection { get; set; }

کلمه prop را بنویسید و سپس دوبار کامند TAB را بر روی کیبورد فشار دهید!!!

به این ابزار Code Snippet گفته می شود که از نوشتن کدهای تکراری جلوگیری می کند.

خوب حال به مسیر زیر بروید

C:\Users\{UserName}\Documents\Visual Studio 2013\Code Snippets\Visual C#

من از ویژوال استادیو 2013 استفاده می کنم پس در آدرس بالا Visual Studio 2013 نوشته شده است شاید نسخه شما متفاوت باشد (دنبال نسخه خود باشید).

بجای {UserName} باید دنبال پوشه ای که مربوط به نام کامپیوتر شما است باشید. مثلا

C:\Users\EduOnlien User\Documents\Visual Studio 2013\Code Snippets\Visual C#

اگر مسیر را پیدا نکردید، در هر مسیری که دوست دارید پوشه زیر را extract کنید.

دریافت کد نویسی به روش EduOnline
حجم: 2.52 کیلوبایت
EduOnline SniptCode

حال در ویژوال استادیو خود، منو Tools را از نوار منو بالا انتخاب کنید و سپس منو Code Sinppets Manager را انتخاب کنید در پنجره باز شده از قسمت

Language گزینه Visual C# l را انتخاب کنید و سپس گزینه Add را بزنید و به درون فولدری (حتما باید درون فولدر EduOnline SniptCode قرار گرفته باشید) که دانلود کرده اید بروید و سپس گزینه Select Folder را بزنید، سپس Ok را انتخاب کنید تا پنجره بسته شود.

حال در بخش کد نویسی خود عبارت

pum را بنویسید و سپس دوبار کلید Tab را بر روی کیبورد خود فشار دهید، سه گزینه به شما نمایش داده می شود که می توانید هر یک را انتخاب کنید.

برای کد نویسی در MVC  نیز می توانید کلمه act را بنویسید و سپس دوبار کلید Tab را بر روی کیبورد خود فشار دهید.

تعیین یک Button به عنوان DefaultButton در MVC روش 2

بسم الله الرحمن الرحیم

در MVC  برای اینکه شما یک Button را به عنوان Button  پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید

 @*<script type="text/javascript">              $(document).ready(function () {
                  $("#MyForm").keypress(function (e) {
                      kCode = e.keyCode || e.charCode //for cross browser
                      if (kCode == 13) {
                          var defaultbtn = $(this).attr("DefaultButton");
                          $("#" + defaultbtn).click();
                          return false;
                      }
                  });
              });
&lt;/script>*@
 
          &lt;script type="text/javascript">
              var ButtonKeys = { "EnterKey": 13 };
              $(function () {
                  $("#MyForm").keypress(function (e) {
                      if (e.which == ButtonKeys.EnterKey) {
                          var defaultButtonId = $(this).attr("DefaultButton");
                          $("#" + defaultButtonId).click();
                          return false;
                      }
                  });
              });
&lt;/script>
 
 @using (Html.BeginForm("NewCustomer", "Customer", FormMethod.Post, new { DefaultButton = "btnContinue", id = "MyForm", Name = "MyForm" }))
    {   <div id="login">
         <table style="vertical-align:5px;">
                        <tr>
                           <td>
      Enter Your Email ID
                            @Html.TextBoxFor(m => m.EmailId, new { @tabindex = "1", @Id = "subemail", @Name = "subemail"})
                            </td>
                        </tr>
 
                         <tr>
                            <td>
 
                                    Select Your City</h2>
                            @Html.DropDownListFor(m => m.Address.City, new SelectList(ViewBag.CityList, "ItemValue", "ItemText"), new { @tabindex = "2"})
 

                            </td>
                        </tr>
                        <tr>
                            <td>
                                &lt;input type="submit" value="Great Deals" class="btn" name="Continue" id="btnContinue"  runat="server" tabindex="3"/>
 
                    </table>
                </div>

تعیین یک Button به عنوان DefaultButton در ASP.NET

بسم الله الرحمن الرحیم

در ASP.NET برای اینکه شما یک Button را به عنوان Button  پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید

<form runat="server">
<asp:Panel runat="server" DefaultButton="bt1">

<asp:TextBox runat="server" />
<asp:Button id="bt1" Text="Default" runat="server" />

</asp:Panel>
</form>

تعیین یک Button به عنوان DefaultButton در MVC

بسم الله الرحمن الرحیم

تعیین یک Button به عنوان DefaultButton در MVC

در MVC  برای اینکه شما یک Button را به عنوان Button  پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید.

<script type="text/javascript"> 
$(document).ready(function (){
$("#MyForm").keypress(function (e) {
kCode = e.keyCode || e.charCode /*for cross browser */
if (kCode == 13) { var defaultbtn = $(this).attr("DefaultButton");
$("#" + defaultbtn).click();
return false;
}
});
});
</script>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { DefaultButton = "SubmitButton", id = "MyForm" }))
{
@Html.TextBox("txtname")
<span>Please Enter value and then press Enter Key</span><br />
<input type="submit" name="btnSubmit" id="SubmitButton" value="Submit" />
}

خطای undefined

بسم الله الرحمن الرحیم

خطای undefined

<script>
        $(document).ready(function () {
            $("#login").click(function () {

           
                var username = $("#username").val();
                var password = $("#password").val();
              
                alert(username);
               
        });
});
</script>

در پنجره alert پیغام زیر نمایش داده می شود.

undefined

1) فایل jquery را در ابتدای head قراردهید نه انتهای body

2) Id  کنترل ها را چک کنید

<input name="username" id="username" type="text" class="input username" placeholder="Username" />
<input name="password" id="password" type="password" class="input password" placeholder="Password" />

System.IO.FileNotFoundException: Could not load file or assembly

بسم الله الرحمن الرحیم

خطای System.IO.FileNotFoundException: Could not load file or assembly

اگر از Visual Studio 2012 یا 2013 استفاده می کنید ممکن است در اجرای دستور

Enable-Migrations

یا

update-database

با خطای زیر موجه شوید

ادامه مطلب...

تغییر Layout.cshtml_

بسم الله الرحمن الرحیم

آموزش asp.net mvc

هنگامی که شما یک پروژه جدید ایجاد می کنید به صورت پیش فرض قالب یا همان Layout شما که توسط MVC ایجاد می شود به صورت زیر خواهد بود

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>@ViewBag.Title - My ASP.NET MVC Application</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
        <script src="~/Temporary/jquery-1.8.2.js"></script>
    </head>
    <body>
        <header>
            <div class="content-wrapper">
                <div class="float-left">
                    <p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
                </div>
                <div class="float-right">
                    <section id="login">
                        @Html.Partial("_LoginPartial")
                    </section>
                    <nav>
                        <ul id="menu">
                            <li>@Html.ActionLink("Home", "Index", "Home")</li>
                            <li>@Html.ActionLink("About", "About", "Home")</li>
                            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                        </ul>
                    </nav>
                </div>
            </div>
        </header>
        <div id="body">
            @RenderSection("featured", required: false)
            <section class="content-wrapper main-content clear-fix">
                @RenderBody()
            </section>
        </div>
        <footer>
            <div class="content-wrapper">
                <div class="float-left">
                    <p>&copy; @DateTime.Now.Year - My ASP.NET MVC Application</p>
                </div>
            </div>
        </footer>

        @Scripts.Render("~/bundles/jquery")
        @RenderSection("scripts", required: false)
    </body>
</html>

این قالب یک Layout است که در پروژه MVC با نوع  Internet ایجاد شده است ترجیحا برای اینکه به مشکل برنخورید بهتر است تغییراتی را در آن ایجاد کنید

مثال:

ممکن است شما یک تابع jquery یا javascript  داشته باشید که در پروژه MVC شما کار نمی کند در صورتی که تابع شما صحیح است مثلا مثل تابع زیر

 <script>
        $(document).ready(function () {
            $("#TestButton").click(function () {

                alert("Huge Code :)");

    });
        });</script>

خوب اگر این کد اجرا نشود پس یک جای کار مشکل دارد!!!

برای اجرا شدن این چنین کد های سنگینی :) بهتر است که Layout پیش فرض را کمی تغییر دهید. برای اجرا شدن این کد کافی است که فقط دستور زیر را که در پایین ترین خط body  نوشته شده است به میان دستورات Head انتقال دهید

@Scripts.Render("~/bundles/jquery")

مشکلات NET 4.5.

بسم الله الرحمن الرحیم

متاسفانه میاکروسافت همیشه بر روی کاربرانش به عنوان یک جامعه آزمایشگاهی استفاده می کند همه ویندوز ویستا و عمر کمتر از یک سال آن را به خاطر دارید!

حال که مایکروسافت NET 4.5 خود را عرضه کرده است، ترجیحا تا stable شدن آن بهتر است از آن استفاده نکنید

چند مشکل ساده:

بجای اسیکوال کانکشن همیشگی می بایست چند property دیگر را set کنید که ممکن چندین ساعت وقت شما را بگیرد!!!

برای Run شدن پروژه همیشه یک سری dll در پوشه bin وجود دارند که فراخوانی می شوند متسفانه در اینجا هم اگر NET 4.5 استفاده کنید به مشکل برخواهید خرد

مشکل آخر :

شاید اگر از NET 4 استفاده کنید برای نصب Package ها و compatiable کردن آنها چند ساعت بگذارید!! که باز هم زیاد خواهد بود اما برای همان کار با NET 4.5 شاید چند روز :(

ساخت یک پروژه MVC

بسم الله الرحمن الرحیم

ساخت یک پروژه MVC

بهترین نسخه برای ایجاد پروژه در حال حاضر نسخه MVC 4 می باشد که بهتر است به صورت زیر ایجاد شود

1- MVC 4

2- NET 4 (در مورد معایب  4.5 NET توضحاتی در این بخش ارائه کردم )

3- EF 5 (در مورد معایب EF 6 توضحاتی در این بخش ارائه کردم )

4- نوع پروژه را Internet انتخاب کنید به دلیل نصب شدن یک سری از Package ها به صورت پیش فرض

اضافه کردن JSON به پروژه های MVC

بسم الله الرحمن الرحیم

آموزش jsonx

package های زیادی برای کار با JSON وجود دارد، در این جا ما ییک از این Package ها را با نام Newtonsoft.Json نصب خواهیم کرد تا بتوانیم توسط آن اطلاعات را ارسال و دریافت کنیم.

در صورتی که می خواهید به روش JSON در MVC اطلاعات را ارسال و دریافت کنید بهتر است که از قسمت Install package

دستور زیر را اجرا کتید

Install-Package Newtonsoft.Json

هر چند برای ارسال و دریافت به روش JSON فقط به یک چیز نیاز دارید و آن هم اضافه کردن فایل Jquery است

<script src="/Scripts/jquery-1.9.1.js"></script>

up
ما را در گوگل محبوب کنید