در این قسمت می خواهیم یک وب سایت برای لیگ برتر فوتبال طراحی کنیم!! در خلال کار نکات اصلی MVC را مرور می کنیم. پروژه ای که می خواهیم انجام دهیم مانند شکل ذیل است:
مرحله اول: ایجاد پروژهیک پروژه جدید از نوع ASP.NET MVC 4 Application با نام Premier League (لیگ برتر) ایجاد کنید:
الگوی پروژه را Empty انتخاب کرده و Razer و HTML 5 را انتخاب کنید
مرحله دوم: ایجاد دیتابیسبر روی پوشه App_Data کلیک راست کرده و گزینه Add> New Item را برگزیده و یک بانک اطلاعات SQL Server با نام PremierLeagueDB.mdb به پروژه خود بیافزایید.
در پنجره Database Explorer اتصال مربوط به PremierLeagueDB.mdb را باز کرده بر روی پوشه Tabels کلیک راست کرده و با انتخاب Add New Tabel جدول های مورد نظر را مانند شکل ذیل ایجاد کنید:
البته شما همه استاد بنده هستید و نیاز به توضیح چگونگی ایجاد جدول ندارید؛ اما برای مبتدیانی چون من این توضیح را می دهم: ابتدا هر دو جدول را مطابق شکل بالا ایجاد کرده و سپس ارتباط میان دو جدول را با استفاده از شکل ذیل ایجاد کنید:
بدین صورت که: در حالی که طراح جدول دوم باز است بر روی دکمه Relationship در نوار ابزار کلیک کرده، در پنجره بعدی بر روی دکمه Add کلیک کرده سپس بر روی Tables And Columns Specification کلیک کنید تا دکمه کوچک کنار آن هویدا شده و با کلیک بر روی این دکمه، پنجره بعدی برای تعیین جدول والد و فرزند و نیز تعیین کلید اصلی و خارجی نمایان می شود که مطابق شکل آن را انجام دهید.
مرحله سوم: ایجاد کلاس Entitity Framework برای کار با داده هابرای کار با بانک اطلاعات مذکور، می خواهیم یک کلاس Entitity Framework در پوشه Models ایجاد کنیم؛ برای این کار دو روش وجود دارد:
روش اول استفاده از ویژوال استودیو است؛ بدین منظور بر روی پوشه Models کلیک راست کرده و با انتخاب Add>New Item از قسمت Data یک Entitity Framework با نام PremierLeague.edmx ایجاد کنید (شکل بعد)
در صفحه بعد گزینه From Database را انتخاب کنید؛ در پنجره بعدی برروی دکمه New Connection کلیک کرده و در پنجره بعدی با انتخاب Microsoft SQL Server Database File و کلیک دکمه Browse فایل دیتابیس خود (PremierLeagueDB.mdb) را انتخاب کنید. (البته در این پنجره شما می توانید بانک اطلاعات SQL Server یا با گزینش 
با کلیک دکمه Next به پنجره بعدی رفته و صبر کنید تا لیستی از اشیای دیتابیس نشان داده شود؛ جعبه انتخاب Tables را انتخاب کنید (شکل ذیل)
پس از کلیک بر روی دکمه Finish کلاس های مربوط به جدول های بانک اطلاعات ساخته شده و آماده استفاده است (شکل ذیل):
روش دوم: استفاده از کد نویسی است؛ در این روش با استفاده از کمی کد نویسی می توانیم کلاس های مورد نظر خویش را بنویسیم. از آنجا که این روش کنترل بیشتری به ما می دهد و نیز به خاطر جنبه آموزشی داشتن، ما در اینجا از این روش استفاده می کنیم.
پس بر روی این پوشه کلیک راست کرده و با انتخاب Add> Class یک کلاس با نام PremierLeagueDB.cs ایجاد کنید. در اینجا چند نکته را مد نظر داشته باشید:
اول این که: کلاس شما باید از DbContext مشتق شده باشد (ارث ببرد):
public class PremierLeagueDB : DbContext
{
}دوم این که: فضانام های ذیل اگر وجود ندارد، به آن بیافزایید:using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data.Entity; using System.Data.Entity.ModelConfiguration.Conventions;اکنون کلاس مربوط به تیم را این گونه بنویسید:
public class Team
{
[Key]
public int TeamID { get; set; }
public string TeamName { get; set; }
public DateTime RegisterDate { get; set; }
public virtual ICollection Player { get; set; }
} سطر اخیر برای ایجاد ارتباط یک-به-چند میان کلاس Team و Player می باشد.public class Player
{
[Key]
public int PlyerID { get; set; }
public int TeamID { get; set; }
public string FullName { get; set; }
public int Age { get; set; }
public DateTime EnrollDate { get; set; }
public virtual Team Team { get; set; }
}
در اینجا نیز سطر اخیر برای ایجاد ارتباط میان دو کلاس است.public class PremierLeagueDB : DbContext
{
public DbSet Teams { get; set; }
public DbSet Players { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
اعتبارسنجی داده ها با Data Annotationsبرای اعتبارسنجی و بررسی صحت داده های ورودی، در MVC از الگوی Data Annotations استفاده می شود. در این روش، هنگام ایجاد یک Property، یک یا چند برچسب Attribute به آن اضافه می کنیم که نشان دهد این فیلد الزامی است و Null نباید باشد، نوع داده و محدوده مقادیر فیلد و دیگر مشخصات آن را کنترل می کنیم. در این جا به چند مورد ضروری اشاره می کنیم:[Required(ErrorMessage = "نام تیم الزامی است")]
public string TeamName { get; set; }
StringLength: برای تعیین طول رشته. به طور مثال نام کامل بازیکن نباید از 50 کاراکتر بیشتر باشد:[StringLength(50, ErrorMessage = "نام بازیکن نباید بیش از 50 کاراکتر باشد")]
public string FullName { get; set; }
RegularExpression: برای اعتبارسنجی فیلد با استفاده از عبارات با قاعده. به طور مثال می توان صحت ایمیل را این گونه اعتبارسنجی کرد:[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"),
ErrorMessage = "ایمیل معتبر نیست")]
public string Email { get; set; }
Range: برای تعیین محدوده مقادیر مجاز برای یک فیلد؛ به طور مثال سن بازیکن باید بین 16 تا 38 سال باشد:[Range(16,38)]
public int Age { get; set; }DataType: برای تعیین نوع داده فیلد؛ به طور مثال، فیلد تاریخ استخدام بازیکن باید از نوع Date باشد:[DataType(DataType.Date,ErrorMessage = "فرمت تاریخ صحیح نمی باشد")]
public DateTime EnrollDate { get; set; }
شما می توانید با آنچه آموختید، دو کلاس Team و Player را برای اعتبارسنجی داده های ورودی، اصلاح نمایید.
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
}
متدهایی که در کنترلرها می نویسیم، غالبا شیئ از نوع ActionResult بر می گرداند که به برنامه می گوید باید کاری انجام داده و نتیجه را بر گرداند. البته شما می توانید چیزهای دیگری از این متدها بخواهید؛ به طور مثال، متد بالا را این گونه می توانید بنویسید:public string Index()
{
return "Hello, Welcome to MVC!";
}به هر حال، شما فعلا این سطر را قبل از return view() اضافه کنید:ViewBag.Message = "به سایت لیگ برتر خوش آمدید!";متد مذکور یک View بر می گرداند که باید آن را ایجاد کنیم؛ بدین منظور بر روی متد Index() کلیک راست کرده و گزینه Add View را انتخاب کنید. در پنجره Add View نام ویو، دستور زبان (که می تواند Razer یا ASPX باشد) و نیز گزینه Use a layout را مشخص می کنید.


را باIndex
جایگزین کنید. این سطر همان پیام را که در کنترلر در متغیر ViewBag.Message ذخیره کرده بودیم، نمایش می دهد.@ViewBag.Message
body
{
padding: 0;
margin: 0;
direction: rtl;
background-color: #e6e7e9;
font-family: Tahoma;
font-size: 10pt;
line-height: 100%;
}
/* Styles for main DIV --------------------------- */
.main
{
width: 800px;
margin: 0 auto;
margin-top: 20px;
margin-bottom: 20px;
border-radius: 10px;
background: #ffffff;
border: 1px solid #b4bbc3;
}
/* Styles for HEADER --------------------------- */
.header
{
background: #d4d7df;
padding: 10px;
border-radius: 9px 9px 0 0;
}
/* Styles for MENU ---------------------------*/
.menubg
{
border-top: 1px solid #646777;
border-bottom: 1px solid #646777;
}
.menu
{
width: 800px;
height: 20px;
margin: 0;
padding: 0;
background: #646777;
border-top: 1px solid #ffffff;
border-bottom: 1px solid #ffffff;
list-style: none;
display: block;
}
.menu li
{
float: right;
border-left: 1px solid #336666;
padding: 3px 0px;
}
.menu li a
{
padding: 3px 16px;
border-left: 1px solid #dddddd;
color: #d4d7df;
text-decoration: none;
}
.menu li a:hover
{
background-color: #000033;
}
/* Styles for CONTENT DIV --------------------------- */
.content
{
padding: 20px;
}
/* Styles for TABLE (CSS3) --------------------------- */
th
{
font-weight: bold;
background-color: #dadada;
}
div.AltRow
{
border:1px solid #dadada;
}
div.AltRow tr:nth-child(odd)
{
background-color: #ffffff;
}
div.AltRow tr:nth-child(even)
{
background-color: #efefef;
}
div.AltRow tr:hover
{
background-color: #dadada;
}
/* Styles for validation helpers ---------------------------*/
.field-validation-error
{
color: #ff0000;
}
.field-validation-valid
{
display: none;
}
.input-validation-error
{
border: 1px solid #ff0000;
background-color: #ffeeee;
}
.validation-summary-errors
{
font-weight: bold;
color: #ff0000;
}
.validation-summary-valid
{
display: none;
}
اکنون فایل _Layout.cshtml را باز کرده و آن را مشابه ذیل اصلاح کنید:این کد، شامل کدهای HTML و مقداری کد Razer است که در بخش بعدی به آن می پردازیم. انشاء الله.@ViewBag.Title
@RenderBody()





public ActionResult Index()
{
ViewBag.Message = "This is my first MVC 4 test!";
return View();
}

منبع : فکرنو داتکام
همانطور که می دانید SQL زبان ساخت یافته Query یا تقاضا از بانک اطلاعاتی می باشد ، در همین راستا شرکت مایکروسافت در ورژن 3 به بعد دات نت کتابخانه ای به نام LINQ به فضا نام های خود افزوده است
LINQ (لینک) مختصر کلمه Language INtegrated Query بوده و یک زبان برای تقاضا از هر گونه مجموعه داده (بانک اطلاعاتی ، آرایه ها ، Xml و...) می باشد . این زبان بسیار شبیه زبان SQL بوده و با زبان های C# و Vb.NET قابل پیاده سازی است .
هدف اصلی خلق LINQ ارائه یک زبان یکتا جهت تقاضا ، برنامه ریزی و فیلتر کردن اطلاعات ذخیره شده در اشیاء مختلف اعم از پایگاه داده ، اشیا ، آرایه ها و از همه مهتر XML است ، این زبان قابلیت Debug شدن به صورت Runtime را دارست و بسیار قابل انعطاف است .
LINQ بسیار مورد پسند توسعه دهندگان وب به وِیژه دوست داران XML قرار گرفت ، شما به وسیله این زبان قادرید به همان سادگی که از پایگاه داده تقاضا می کنید از یک ساختار XML یا یک Object نیز تقاضا نمایید .
بنده آموزش LINQ را در سه مقاله ارائه خواهم کرد :
برای دیدن ادامه مطلب روی لینک زیر کلیک کنید
بیایید فرض کنیم که ما در ابتدا یک صفحه به نام "Products.aspx" داریم که نام یک محصول رو به عنوان ورودی querystring می گیره و اطلاعات صفحه رو بر اساس نام محصول یا شناسه فیلتر میکنه. آدرس مربوط به صفحه Products.aspx، مثل اینه :
http://www.store.com/products.aspx?category=books
http://www.store.com/products.aspx?category=DVDs
http://www.store.com/products.aspx?category=CDs
به جای استفاده از یک querystring برای نمایش هر دسته، ما می خواهیم تا تغییری در آدرس ایجاد کنیم طوری که به نظر برسد که هر دسته از محصولات یک آدرس منحصر به فرد دارد و این به موتور جستجو هم بسیار کمک میکند تا محصولات شما را به درستی معرفی کند .در ادامه این پست بیش از 4 روش مختلف را برای چنین تکنیکی بررسی می کنیم .
روش 1 : استفاده از پارامترها Request.PathInfo به جای QueryStrings
در روش اول من قصد دارم برای نشان دادن آدرس ،از روشی برای بازنویس استفاده کنم که یکی از ویژگی های نا شناخته شده در ASP.NET است . ویژگی Request.PathInfo. برای درک بهتر این روش آدرس فروشگاه اینترنتی به شکل زیر را در نظر بگیرید :
http://www.store.com/products.aspx/Books
http://www.store.com/products.aspx/DVDs
http://www.store.com/products.aspx/CDs
آدرسی به این سبک دیگر حالت Querystring ندارد و با قرار دادن کاراکتر / پس از Products.aspx موتور های جستجو آنرا به عنوان سه آدرس متفاوت می شناسند و نه به عنوان یک آدرس اینترنتی با سه مقدار ورودی مختلف .
حالا سوال اینه که چه طور باید این آدرسو تو برنامه تشخیص داد و محتوای مورد نظر بیننده رو بهش نشون داد.
شما به سادگی می توانید به کمک Request.PathInfo پارامترهای بعد از / را از ادامه آدرس بخوانید:
public string GetCategory()
{
if ((Request.PathInfo.Length == 0)) {
return "";
} else {
return Request.PathInfo.Substring(1);
}
}Request.PathInfo Example
این بهترین شکل آدرس برای یک محصول است به چند دلیل :
1- آسان به خاطر می ماند
2- موتور جستجو به آسانی دسته بندیش میکند
3- امنیت وب سایت را بالا می برد
پردازش آدرسهای فوق با استفاده از IIS5 و IIS6 آسان نیست و برای پردازش این شکل از آدرس ها باید ISAPI Extensions را در دات نت بازسازی کنید که این روش در بخش 4 تشریح خواهد شد. اما در IIS 7 مشکلی برای اینکار وجود ندارد و بدون هیچ تغییری در تنظیمات سرور می توانید وب سایت خود را با این روش آدرس دهی اجرا کنید .
به کد های زیر توجه کنید که تنظیمات مربوط به این شکل آدرس دهی را در web.config با استفاده از URLRewriter نمایش می دهد .
1) آن بر روی هر IIS 7.0 ماشین کار می کنند. شما یک مدیر لازم نیست که فعال کردن هر چه بر روی میزبان از راه دور. علاوه بر این در اعتماد متوسط حالات میزبانی مشترک کار می کنند.
2) از آنجا که من پیکربندی UrlRewriter در هر دو حالت
یک برنامه نمونه نیز برای این روش ارائه شده است که می توانید از اینجا دانلود کنید .
روش 4 : ISAPIRewrite به فعال کردن فرمت آدرس بدون پسوند برای IIS5 و IIS6
اگر نمی خواهید برنامه خود را روی سرور با IIS 7.0 اجرا کنید برای پیاده سازی این روش در IIS5 و IIS6 باید از فیلتر ISAPI برای بازنویسی آدرس ها استفاده شود .
برای استفاده از این روش بهترین ابزار موجود که رایگان هم هست Ionic's ISAPI Rewrite است .
برای بازنویسی آدرسها این ابزار یک ابزار تایید شده توسط بسیاری از شخصیت های برتر مایکروسافت است .
می توانید از وبلاگ اسکات هنسلمن هم تشریحی از این روش ببینید .
هم دانلود با لینک مستقیم داره و هم غیر مستقیم . ثبت نام کنید بعد اجازه دانلود میده.
بفرمیو ...
اینم چندتا کتاب خوب از همین سایت :


تاریخچه در فایر فاکس در فایلی با فرمت دیتا بیس SQLite ذخیره شده است . حتی cookiesها و ورودی های فرم هم در این پایگاه داده ذخیره می شوند . برای دسترسی به پایگاه داده فایر فاکس می توانید از SQLite Manager استفاده کنید .

به کمک این افزونه شما می توانید همه فایل های SQLite را مشاهده کنید یا فایل جدیدی ایجاد کنید و یا دستورات SQL را در آن اجرا کنید .
بسیار از toolKit های موجود در Ajax.Net را می توان با استفاده از ابزار های سبکتری مانند JQuery نیز پیاده سازی کرد . چند فریم ورک برای این کار وجود دارد که بنده شخصا JQuey را ترجیح می دهم . اما برای اشخاصی که نیازی به قابلیت های پیشرفته JQuery ندارند Dojo پیشنهاد می شود که بسیار سریع است .
مقایسه ای بین بهترین های جاوا در ادامه آورده شده است که به روشنی سرعت هر framework را نشان می دهد .

framework ها را دانلود کنید :
| Dojo 1.0.2 | JQuery 1.2.3 | MooTools 1.2beta2 | Prototype 1.6.0.2 | |
| Mozilla Firefox 2.0.0.12 – no addons – winxp | 128 | 266 | 115 | 259 |
| Mozilla Firefox 2.0.0.12 – winxp | 144 | 290 | 127 | 260 |
| Mozilla Firefox 2.0.0.12 – linux | 253 | 438 | 255 | 384 |
| Opera 9.26 – winxp | 32 | 136 | 148 | 194 |
| Opera 9.26 – linux | 110 | 188 | 238 | 364 |
| Internet Explorer 7 – no addons – winxp | 263 | 330 | 662 | 1563 |
| Internet Explorer 7 – winxp | 264 | 334 | 674 | 1583 |
| Internet Explorer 6 | 387 | 600 | 945 | 2279 |
| Internet Explorer 6 – linux (wine) | 692 | 978 | 1310 | 2616 |
| Safari 3.0.4 Beta 3 – winxp | 36 | 76 | 84 | 116 |
| Konqueror – linux | 324 | 450 | X | X |