اضافه کردن کنترلر ( اموزش پروژه محور MVC 5 )

سایر مقالات سری اموزش پروژه محور MVC 5  :

شروع کار با ASP.NET MVC 5

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

  • مدل‌ها (Model): شامل کلاس‌هایی است که نماینده داده های برنامه و قسمت اعتبار سنجی می شوند.
  • نماها(Views) : فایل های این قسمت برای تولید داینامیک صفحات HTML استفاده می شوند.
  • کنترلرها (Controllers): کلاس‌هایی که درخواست‌هایی که از طرف مرورگر می‌آید را مدیریت می‌کنند،  داده را از مدل  دریافت می‌کنند و View  مشخصی را برای برگشت دادن پاسخ به مرورگر انتخاب می‌کنند.

ما در این سری اموزش پروژه محور MVC 5 تمام مفاهیم گفته شده را آموزش می‌دهیم و نشان می‌دهیم که چگونه از آنها برای ساخت یک برنامه استفاده کنیم.

شروع اموزش پروژه محور MVC 5

با ساختن یک کلاس کنترلر شروع می‌کنیم. در قسمت Solution Explorer  بر روی Controllers کلیک راست کنید و سپس Add و بعد Controller را کلیک کنید.

اموزش پروژه محور mvc 5

در پنجره Add Scaffold بر روی MVC5 Controller-Empty و سپس Add کلیک کنید.

آموزش MVC

برای  کنترلر خود نام انتخاب کنید. مثلا HelloWorldController و سپس بر روی Add کلیک کنید.

آموزش mvc در asp.net

توجه داشته باشید که در Solution Explorer یک فایل با نام HelloWorldController.cs و یک فولدر جدید Views\HelloWorld اضافه شده است. کنترلر در محیط برنامه باز می‌شود.

آموزش asp

قطعه کد زیر را در محتوای فایل قرار دهید.

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..."; 
        } 
    } 
}

متدهای کنترلر یک رشته از HTML را به عنوان نمونه  برمی‌گرداند. نام کنترلر HelloWorldController است و نام اولین متد آن index  می‌باشد. برنامه را اجرا کنید(با کلیک F5 یا Ctrl+F5).   در مرورگر در نوار آدرس عبارت HelloWorld را اضافه کنید. صفحه موردنظر در مرورگر مانند شکل زیر خواهد بود.

آموزش asp mvc

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 }
    );
}

اموزش پروژه محور MVC 5

وقتی که شما برنامه را اجرا می‌کنید و URL ای برای آن در نظر نمی‌گیرید، برنامه به طور پیش‌فرض طبق شکل بالا از کنترلر Home و متد Index استفاده می‌کند.
بخش اول URL کلاس کنترلری را که باید اجرا شود مشخص می‌کند. بنابراین /HelloWorld به کلاس HelloWorldController نگاشت(map) می‌شود. بخش دوم URL متدی از کلاس را که باید اجرا شود مشخص می‌کند. بنابراین /HelloWorld/Index باعث می‌شود متد Index از کلاس HelloWorldController اجرا شود. توجه داشته باشید که ما در مرورگر فقط می‌توانیم به آدرس /HelloWorld برویم و متد Index به طور پیش‌فرض انتخاب می‌شود. این امر به این دلیل است که متد با نام Index متد پیش‌فرضی است که بر روی کنترلر فراخوانی می‌شود. بخش سوم(Parameters) URL به داده route اختصاص دارد. در مورد داده route در قسمت‌های بعدی این سری آموزشی صحبت خواهیم کرد.
در مرورگر به آدرس http://localhost:xxxx/HelloWorld/Welcome بروید. متد Welcome اجرا می‌شود و رشته “This is the Welcome action method” را برمی‌گرداند. نگاشت(mapping) پیش‌فرض در MVC به صورت [Controller]/[ActionName]/[Parameters] خواهد بود. برای این URL، کنترلر HelloWorld و Welcome متد اجرایی است. شما هنوز از بخش [Parameters] در URL استفاده نکرده‌اید.

آموزش asp mvc

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

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

برنامه را اجرا کنید و در مرورگر به آدرس :

http://localhost/HelloWorld/Welcome?name=Scott&numtimes=4 بروید. می‌توانید از name و numtimes متفاوتی استفاده کنید.

aspmvc01

در نمونه بالا بخش سوم از URL  استفاده نشده است. پارامترهای  name و numtimes به صورت query string ارسال می‌شوند. علامت سوال ؟ در URL بالا یک جداکننده (separator) است. کاراکتر & نیز query string ها را از هم جدا می‌کند.

قطعه کد زیر را در متد Welcome قرار دهید:

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

برنامه را اجرا کنید و URL زیر را وارد کنید.

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

آموزش asp mvc

در این حالت بخش سوم 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 معمولا پارامترها را به عنوان route data ارسال می‌کنند تا به عنوان .query string شما همچنین می‌توانید یک مسیر(route) اضافه کنید تا هر دو پارامتر name و numtimes را به عنوان داده مسیر ((route data در 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 بروید.

اموزش asp.net

در بسیاری از برنامه‌های MVC مسیر پیش‌فرض به درستی کار می‌کند. بعدا در این سری آموزشی خواهید آموخت که چگونه داده را با استفاده از model binder ارسال کنید. در این مثال‌ها کنترلر از بخش VC در MVC استفاده می‌کند که view و controller خواهد بود. کنترلر HTML را به صورت مستقیم برمی‌گرداند. به طور عادی معمولا تمایلی نداریم که کنترلر، HTML را مستقیما برگرداند زیرا کدنویسی آن زمانبر است. ( اموزش پروژه محور MVC 5 )

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

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

درباره‌ی محمد بروشکی

همچنین ببینید

ساخت اپلیکیشن سمت کاربر با فرمت Javascript

در این بخش از آموزش Web API با استفاده از HTML، Javascript و  Knockout.js   اپلیکیشنی …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *