تهیه پیشنیازهای شروع به کار با ASP.NET MVC
در زمان نگارش این مطلب، نگارش نهایی ASP.NET MVC 3 در دسترس است و همچنین نگارش بتای 4 آن نیز قابل دریافت و نصب میباشد. بنابراین فعلا اساس را بر مبنای نگارشی قرار خواهیم داد که در محیط کاری قابل استفاده باشد.
ASP.NET MVC 3 پس از ارائه Visual Studio 2010، منتشر شد و VS.NET به صورت پیش فرض به همراه ASP.NET MVC 2 است. سادهترین روش نصب ASP.NET MVC 3 بر روی VS 2010 استفاده از برنامه رایگانی است به نام Web Platform Installer. این برنامه را از این آدرس میتوان دریافت کرد: http://microsoft.com/web/downloads
پس از دریافت آن حداقل دو راه برای نصب ASP.NET MVC 3 وجود دارد. یا گزینهی نصب ASP.NET MVC 3 Tools Update را انتخاب کنید و یا سرویس پک یک VS 2010 را از طریق این برنامه یا جداگانه (بسته کامل و مستقل) دریافت و نصب نمائید. VS 2010 SP1 نیز به همراه ASP.NET MVC 3 است؛ همچنین IIS Express را که نسخه ساده شده IIS 7.5 مخصوص توسعه دهندهها است، میتوان با این نگارش یکپارچه کرد.
بنابراین به صورت خلاصه بهترین کار این است که سرویس پک یک VS 2010 را یکبار نصب نمائید. اگر این نصب از طریق برنامه Web Platform Installer باشد، به صورت خودکار IIS Express را هم انتخاب و نصب خواهد کرد. اگر فقط SP1 را به صورت مستقل دریافت کردهاید، حاوی IIS Express نیست و باید جداگانه آنرا دریافت و نصب نمائید (^). البته نصب IIS Express در اینجا یک گزینه اختیاری است و الزامی نیست.
مروری بر ساختار یک پروژه ASP.NET MVC
پس از نصب پیش نیازها، امکان انتخاب یک پروژه وب ASP.NET MVC 3 در VS 2010 میسر خواهد شد:
در اینجا گزینهی ASP.NET MVC 3 Web Application را انتخاب میکنیم. در صفحه بعدی که ظاهر میشود:
حالت Internet Application به همراه یک سری مدل و کنترلر از پیش نوشته شده جهت مدیریت ورود به سایت و ثبت نام در سایت است و حالت Empty تنها به همراه ساختار پیش فرض پوشههای یک پروژه ASP.NET MVC است.
فعلا جهت توضیحات اولیه بیشتر، گزینهی Internet Application و نوع View Engine را هم ASPX انتخاب میکنیم. کار View Engine، رندر یک View به شکل HTML و ارائه نهایی اطلاعات آن به کاربر است. این نوعهای متفاوت هم فقط در Syntax تفاوت دارند (به آن templating language هم گفته میشود). نوع ASPX همان Syntax متداول قدیمی ASP.NET را تداعی میکند و نوع Razor به صورت اختصاصی برای ASP.NET MVC تهیه شده است.
باید در نظر داشت که گزینه مرجح از نگارش 3 به بعد، Razor است (البته این هم سلیقهای است. اگر هیچکدام از این دو را هم نخواهید استفاده کنید مشکلی نیست! میشود کلا آن را عوض کرد). هدفم هم از انتخاب ASPX نمایش یک سری ریزه کاری است که شاید برای برنامه نویسهای ASP.NET Web forms جالب باشد. این موارد را در حالت انتخاب Razor به این وضوح مشاهده نخواهید کرد و محیط خیلی ساده شده است.
همانطور که ملاحظه میکنید این فریم ورک یک سری پوشه پیش فرض را توصیه میکند. بدیهی است که ضرورتی ندارد تا پوشه Models یا پوشه Controllers حتما در همین پروژه قرار داشته باشند؛ چون زمانیکه پروژه کامپایل شد، محل این پوشه بندیها آنچنان اهمیتی ندارد.
نکته جالب در این تصویر، فایل Site.Master است. بله، این فایل شبیه به همان فایل master page موجود در ASP.NET Web form است که قالب کلی سایت را به همراه داشته و سایر صفحات، قالب خود را از آن به ارث میبرند. حتی تگ runat=server هم به وضوح در این فایل، در چندین جای آن قابل مشاهده است. تنها تفاوت آن نداشتن فایل code behind است. asp:ContentPlaceHolder نیز در آن تعریف شده است. خلاصه این محیط جدید به معنای دور ریختن تمام آنچیزی که در Web forms وجود دارد نیست. برای نمونه اگر فایل ChangePassword.aspx موجود در پوشه Account را باز کنید، باز هم همان asp:Content معروف به همراه تگ runat=server قابل مشاهده است. برای مثال این محتوای صفحه Error.aspx پیش فرض آن است:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %>
<asp:Content ID="errorTitle" ContentPlaceHolderID="TitleContent" runat="server">
Error
</asp:Content>
<asp:Content ID="errorContent" ContentPlaceHolderID="MainContent" runat="server">
<h2>
Sorry, an error occurred while processing your request.
</h2>
</asp:Content>
اگر از قسمت Inherits آن صرفنظر کنیم، «هیچ» تفاوتی با ASP.NET Web forms ندارد؛ علت هم به این بر میگردد که موتوری که Web forms و MVC از آن استفاده میکنند، یکی است. هر دو بر فراز موتور ASP.NET معنا پیدا خواهند کرد.
قرار دادهای پوشههای پیش فرض یک پروژه ASP.NET MVC
- پوشه Controllers حاوی کلاسهای کنترلری است که درخواستهای رسیده را مدیریت میکنند.
- پوشه Models حاوی کلاسهایی است که اشیاء تجاری و همچنین کار با اطلاعات را تعریف و مدیریت میکنند.
- در پوشه Views، فایلهای قالبهای رابط کاربری که مسئول ارائه خروجی به کاربر هستند قرار میگیرند. همچنین مطابق قرارداد دیگری، اگر نام کنترلر ما مثلا ProductController باشد (با توجه به اینکه نام کلاس آن هم مطابق قرارداد، مختوم به کلمه Controller است)، فایلهای Viewهای مرتبط با آن در پوشه Views/Product قرار خواهند گرفت.
- در پوشه Scripts، فایلهای جاوا اسکریپت مورد استفاده در سایت قرار خواهند گرفت.
- پوشه Content محل قرارگیری فایلهای CSS و تصاویر است.
- پوشه App_Data جایی است که فایلهایی با قابلیت read/write در آن قرار میگیرند (و باید دقت داشت که فقط همینجا هم باید قرار گیرند و گرنه این نوشتنها در مکانهای متفرقه، ممکن است سبب ری استارت شدن برنامه شوند:(^)).