Info@Afragraphic.ir
0912 22 460 22
خدمات و مطالب آموزشی

افزودن کنترلرها در MVC-- آموزش گام به گام ام وی سی

کانون تبلیغاتی افرا گرافیک در نظر دارد به صورت گام به گام MVC5 را به شما عزیزان آموزش دهد. لذا قسمت دوم آموزش در زیر قرار داده شده است.

کلمه ی  MVC مخفف model-view-controller می باشد. در حقیقت MVC الگوی ارتقا برنامه هایی است که به خوبی طراحی شده اند، آزمون پذیرند و پشتیبانی آنها آسان است. برنامه هایی که با MVC  ساخته می شوند از اجزاء زیر تشکیل شده اند:

Models: کلاس هایی هستند که نمایانگر داده های برنامه و با استفاده از منطق اعتبار سنجی امکان کار براساس قوانین تجاری را فراهم میکنند.

Views: فایل های الگو که برنامه ی شما برای ساخت پاسخ های HTML پویا از آنها استفاده می کند.

Controllers: کلاس هایی که درخواست های ورودی مرورگر را بررسی می کنند، داده های مدل را بازیابی می کنند و در نهایت الگوهای view را که مسئول پاسخ به مرورگر هستند را مشخص می کنند.

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

با ساخت یک کلاس controller آغاز می کنیم. در قسمت solution Explorer بر روی پوشه ی controller راست کلیک کنید سپس بر روی add و بعد از آن بر روی  controller  کلیک کنید.

 

635813952745797483AC.jpg

 

در کادر add بر روی MVC 5 Controller -Empty و سپس add کلیک کنید. 

 

635813953309879746AS.jpg

 

نام Controller جدید خود را HelloWorldcontroller بگذارید و سپس بر روی  add  کلیک کنید.

 

635813953932495358addC2.jpg

 

 controller  خود را add کنید.

توجه کنید که در قسمت Solution Explorer فایل جدیدی با نام HelloWorldcontroller.cs  و یک فولدر جدید Views\Helloworld ساخته شده است.Controller در IDE باز است.

  

635813955862295736hw.jpg

 

 کدهای زیر را جایگزین محتویات فایل کنید.

using System.Web;
using System.Web.Mvc;    namespace MvcMovie.Controllers  {      public class HelloWorldController : Controller      {          //         // GET: /HelloWorld/           public string Index()          {              return "This is my <b>default</b> action...";          }            //         // GET: /HelloWorld/Welcome/           public string Welcome()          {              return "This is the Welcome action method...";          }      }  }

متدهای controller یک عبارت HTML همچون تصویر زیر باز می گردانند. نام controller  را HelloWorldcontroller گذاشتیم و اولین متد index نامیده شد.

 بیایید این عبارت را در یک مرورگر فراخوانی کنیم . برنامه را اجرا کنید (کلیدF5  یا Ctrl+F5)  را فشار دهید. در مرورگر و در قسمت آدرس Helloworld را اضافه کنید (برای مثال در تصویر زیر (http://localost:1234/HelloWorld ).

صفحه ای که مرورگر نشان می دهد اینگونه خواهد بود. در روش بالا کد مستقیما همچون یک عبارت نشان داده شد. شما از سیستم خواستید که فقط چند HTML بسازد و سیستم هم انجام داد.

 

635813962321385175IE_helloWorld.png

 ASP.net MVC  بر اساس URL های ورودی کلاس های متفاوتی از کنترل کننده ها (و متدهای متفاوتی درون آنها) را فراخوانی می کند. منطق مسیریابی URL در   ASP.NET MVC  به صورت پیش فرض از فرمتی مثل نمونه ی زیر استفاده می کند تا تعیین کند کدام کد باید ظاهر شود:

/[Controller]/[ActionName]/[Parameters]

شما فرمت مسیریابی را در فایل App_Start/RouteConfig.cs مشخص می کنید.

public static void RegisterRoutes(RouteCollection routes){
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action ="Index", id =UrlParameter.Optional}
    );}

اگر برنامه را اجرا کردید و هیچ بخش مربوط به URL را وارد نکردید، به صورت پیش فرض به قسمت Home در کنترل کننده می رود و اَکشن متد index را که در بخش پیش فرض کد بالا تعیین شده است را انتخاب می کند.

نخستین بخشURL ، کلاس کنترل کننده را که قرار است اجرا شود مشخص می کند. بنابراین HelloWorld به کلاس HelloWorldController اشاره می کند. بخش دوم URL اکشن متدی از کلاس را مشخص می کند که باید اجرا شود. توجه کنید که ما کافیست فقط عبارت /HelloWorld را جستجو کنیم و متد index به صورت پیش فرض اجرا می شود. دلیل اینکار این است که متد index یک متد پیش فرض است که درصورت مشخص نبودن متد مورد استفاده به صورت پیش فرض فعال می شود‌. پارامتر سوم URL مخصوصroute data  است. در بخش های بعدی با این داده ها بیشتر آشنا خواهیم شد.

در مرورگر آدرس http://locaohost:xxxx/HelloWorld/welcome را وارد کنید. متد welcome  اجرا می شود و عبارت This is the welcome action نمایش داده می شود. مسیر پیش فرض MVC اینگونه است /[Controller]/[ActionName]/[Parameters. برای این URL کنترل کننده  Helloworld  و اکشن متد welcome است ‌شما هنوز هم از [parameter] به عنوان بخشی از URL استفاده نکرده اید.

 

635813965291635064WelcomeAction.png

بیایید با تغییر این مثال شما را با پاس دادن اطلاعات پارامترها ازURL  به controller آشنا کنیم‌ ( برای مثال HelloWorld/Welcome?name=Scott&numtimes=4). متد welcome  را به صورتی تغییر دهید که دو پارامتر را دربر گیرد. توجه کنید که این کد از پارامتر انتخابی #C در مواقعی استفاده می کند که هیچ عددی برای پارامتر مشخص نشده و پارامتر به صورت پیش فرض روی عدد 1 قرار می گیرد.

public string Welcome(string name,int numTimes =1) {
     return HttpUtility.HtmlEncode("Hello "+ name +", NumTimes is: "+ numTimes);}

نکته ی امنیتی: کد بالا از Http server utility.HtmlEncode برای محافظت برنامه در برابر ورودی های مخرب استفاده شده است( یعنی جاوا اسکریپت).

برنامه را اجرا کنید و آدرس http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4  را در مرورگر وارد کنید. می توانید مقادیر یا نام های مختلفی را در URL امتحان کنید. سیستم اتصال مدلASP.NET MVC  به صورت خودکار پارامترهای نامگذاری شده را از بین عبارت های موجود در ستون آدرس به پارامترهای متد شما مپ می کند.

 

635813967557074639numTimesParam.png

و در نمونه ی بالا ، قسمت های URL (پارامترها) استفاده نشده اند، نام و تعداد پارامترها به صورت؟ علامت سئوال نشان داده شده اند.در URL بالا یک تفکیک کننده وجود دارد ، کاراکتر & عبارت ها را جدا می کند.

در متد Welcome کدهای زیر را جایگزین کنید:

public string Welcome(string name,int ID =1){
    return HttpUtility.HtmlEncode("Hello "+ name +", ID: "+ ID);}

حالا برنامه را اجرا کنید وurl زیر را اجرا کنید:

http://localhost:xxx/HelloWorld/Welcome/3?name=Rick

  

635813969735299227rick.png

این بار بخش سوم URL با پارامتر اصلی ID مطابقت می کند. متد عملی Welcome حاوی یک پارامتر (ID) است که با URL تعیین شده درمتد RegisterRoutes مطابقت دارد.

public static void RegisterRoutes(RouteCollection routes){
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new{ controller ="Home", action ="Index", id =UrlParameter.Optional}
    );}

در برنامه ی ASP.NET MVC، بسیار معمول است که پارامترها به جای اینکه به صورت عبارت عبور کنند به صورت داده های مسیری همانند کاری که در ID بالا انجام دادیم عبور کنند. شما می توانید با اضافه کردن مسیر جاری کنید که هم اعداد و هم تعداد تکرار اعداد در پارامترها به صورت داده های مسیری در URL نمایش داده شوند. در قسمت فایل App_Start\RouteConfig.cs  مسیر Hello را اضافه کنید.

public class RouteConfig{
   public static void RegisterRoutes(RouteCollection routes)
   {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

      routes.MapRoute(
          name: "Default",
          url: "{controller}/{action}/{id}",
          defaults: new{ controller ="Home", action ="Index", id =UrlParameter.Optional}
      );

      routes.MapRoute(
           name: "Hello",
           url: "{controller}/{action}/{name}/{id}"
       );
   }}

برنامه را اجرا کنید و آدرس /localhost:XXX/HelloWorld/Welcome/Scott/3. را در مرورگر وارد کنید.

  

635813972858077839hw99.png

در بعضی از برنامه های MVC مسیر پیش فرض به خوبی عمل می کند. دردبخش های بعدی این آموزش در مورد عبور دادن داده ها با استفاده ازmodeo binder نکات بیشتری خواهید آموخت، و برای این کار نیازی به تغیر مسیر پیش فرض نخواهید داشت.

در این مثال ها کنترل کننده بخش VC مربوط به MVC را انجام داد منظور از VC کارهای مربوط به کنترل و نمایش است. کنترل کننده مستقیما HTML را باز می گرداند. معمولا شما نیازی به بازگشت مستقیم HTML ندارید ، چون کد نویسی بسیار دشوار می شود‌. به جای آن از فایل های الگوی مجزا برای ساخت پاسخ های HTML استفاده می کنید.

ادامه آموزش در قسمت سوم و از طریق مطالب آموزشی سایت افراگرافیک - www.afragraphic.ir خواهید دید.

نظــرات شما

نام :
وب سایت :
ایمیل :
پیغام :  

تمامی حقوق مادی و معنوی این سایت متعلق به شرکت طراحی و چاپ افراگرافیک  می باشد.