آموزش Routing) ASP.NET MVC)

آموزش Routing) ASP.NET MVC)

با سلام و وقت بخیر به شما همراهان همیشگی ABLY

اگر تا به الان ما را دنبال کرده باشید می دانید که در این دوره از آموزش های ASP.NET MVC تا به الان به موضوعات زیر پرداخته ایم:

MVC چیست؟

آموزش ASP.NET MVC

آموزش ASP.NET MVC (ساختار پروژه)

حال در این مقاله و در این مرحله از آموزش، نحوه Routing کردن پروژه  را به شما آموزش خواهیم داد. بنابراین تا پایان این آموزش با مجموعه ABLY همراه باشید.

asp net mvc routing

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

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

 اموزش ASP.NET MVC (Routing)

---------------------------------------------------

با سلام و وقت بخیر به شما همراهان همیشگی ABLY

اگر تا به الان ما را دنبال کرده باشید می دانید که در این دوره از آموزش های ASP.NET MVC تا به الان به موضوعات زیر پرداخته ایم:

  1. MVC چیست؟
  2. آموزش ASP.NET MVC
  3. آموزش ASP.NET MVC (ساختار پروژه)

حال در این مقاله و در این مرحله از آموزش، نحوه Routing کردن پروژه  را به شما آموزش خواهیم داد. بنابراین تا پایان این آموزش با مجموعه ABLY همراه باشید.

Routing in MVC:

همانطور که می دانید، در برنامه ASP.NET Web Forms، هر URL باید با فایل خاص  .aspx مطابقت داشته باشد.

به عنوان مثال:

http: //domain/studentsinfo.aspx باید با studentists.info فایل که حاوی کد و نشانه گذاری برای ارائه یک پاسخ به مرورگر است مطابقت داشته باشد.

در برنامه ASP.NET Webform، پردازنده درخواست فایل  .aspx است و در MVC، کلاس Controller و Action است. به عنوان مثال، http: // domain / students می تواند به http: //domain/studentsinfo.aspx در ASP.NET WebForms ترسیم شود و همان URL را می توان به روش کنترلی و روش عملگر در MVC به کار برد.

توجه:

  • مسیریابی کردن (Routing)  فقط به MVC Framwork محدود نمی شود. بلکه می تواند با برنامه ASP.NET Webform یا برنامه MVC مورد استفاده قرار گیرد.

Route (مسیریابی)

Route، الگوی URL و اطلاعات دستیار را تعریف می کند. تمام مسیرهای پیکربندی یک برنامه ذخیره شده در RouteTable توسط موتور مسیریابی، برای تعیین کلاس یا پرونده مربوطه مناسب برای یک درخواست ورودی استفاده می شود.

تصویر زیر عملکرد Routing در MVC را نشان می هد.

routing process in mvc

 

Configure Route (پیکربندی Route)

هر برنامه MVC باید حداقل (حداقل یک مسیر) را پیکربندی کند (که به طور پیش فرض توسط   MVC Framwork پیکربندی شده باشد). شما می توانید یک مسیر را در کلاس RouteConfig ثبت کنید، که در مسیر RouteConfig.cs در پوشه App_Start قرار دارد. تصویر زیر نشان می دهد که چگونه مسیر را در کلاس RouteConfig پیکربندی کنید.

routeconfig

همانطور که در شکل بالا می بینید، مسیر، با استفاده از متد MapRoute()  پیمایش می شود، که نام آن "Default"، الگوی آدرس "{controller} / {action} / {id}" و پارامتر پیش فرض برای کنترل کننده، متد id است که اگر آنها در URL درخواست ورودی وجود نداشته باشد، مشخص می کند که کدام کنترل کننده، باید مورد استفاده قرار گیرد.

به همان شیوه، می توانید مسیرهای دیگر را با استفاده از متد MapRoute()  در RouteCollection پیکربندی کنید. این RouteCollection در واقع یک ویژگی از کلاس RouteTable است.

URL Pattern:

الگوی URL تنها پس از قسمت نام دامنه در URL در نظر گرفته می شود. به عنوان مثال، الگو URL "{controller} / {action} / {id}" به نظر می رسد مانند localhost: 1234 / {controller} / {action} / {id} باشد. هر چیزی پس از "localhost: 1234 /" به عنوان نام کنترل کننده در نظر گرفته می شود. به همین ترتیب، هر چیزی پس از نام کنترل کننده، به عنوان متد Action و سپس مقدار پارامتر id شناخته می شود.

url routing in mvc

اگر نشانی اینترنتی پس از نام دامنه چیزی نداشته باشد، کنترل کننده پیش فرض درخواست خواهد شد. به عنوان مثال، http: // lcoalhost: 1234 با روش HomeController و Index به عنوان پارامتر پیش فرض تنظیم شده است.

تصویر زیر URLها را با کنترل کننده، متد Action و پارامترID پیش فرضشان نشان داده شده است.

urls in mvc

Multiple Routes (مسیرهای چندگانه)

شما همچنین می توانید یک مسیر سفارشی را با استفاده از متد MapRoute پیکربندی کنید. شما باید حداقل دو پارامتر را در MapRoute، نام مسیر و الگوی URL ارائه دهید. پارامترهای پیش فرض اختیاری است.

شما می توانید چندین مسیر سفارشی را با نام های مختلف ثبت کنید. مثال زیر را در نظر بگیرید که مسیر "دانشجو" را ثبت می کنیم:



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

        routes.MapRoute(
            name: "Student",
            url: "students/{id}",
            defaults: new { controller = "Student", action = "Index"}
        );

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


همانطور که در کد بالا نشان داده شده است، الگو URL برای مسیر دانشجویی دانشجویان است. {id} مشخص می کند که هر URL که با domainName / students شروع می شود، باید توسط StudentController انجام شود. توجه داشته باشید که ما الگوی {action} را در الگوی URL مشخص نکرده ایم زیرا هر URL که از دانش آموز شروع می شود، باید همیشه از متد StudentController استفاده کنیم. ما کنترل کننده و اقدام پیش فرض را برای رسیدگی به درخواست هر URL که از domainname / students شروع می شود، تعیین کردیم.

 

 

Framwork MVC هر مسیر را به ترتیب ارزیابی می کند. ابتدا با اولین مسیر پیکربندی شروع می شود و اگر آدرس ورودی، الگوی URL مسیر را برآورده نمی کند، مسیر دوم و به همین ترتیب مسیرهای بعد را ارزیابی می کند. در مثال بالا، موتور مسیریابی ابتدا مسیر دانشجو را ارزیابی می کند و اگر آدرس ورودی با دانشجویان شروع نشود، تنها مسیر دوم که مسیر پیش فرض است را در نظر می گیرد.

routing

Route Constraints (محدودیت مسیر)

شما همچنین می توانید محدودیت های مقدار پارامتر را با تنظیم محدودیت های مسیر اعمال کنید. به عنوان مثال، مسیر زیر، یک محدودیت در پارامتر id را اعمال می کند که مقدار شناسه باید عددی باشد.



routes.MapRoute(
        name: "Student",
        url: "student/{id}/{name}/{standardId}",
        defaults: new { controller = "Student", action = "Index", id = UrlParameter.Optional, name = UrlParameter.Optional, standardId = UrlParameter.Optional },
        constraints: new { id = @"\d+" }
    );



بنابراین اگر مقدار غیر عددی برای پارامتر id داده شود، این درخواست با مسیر دیگری در نظر گرفته می شود یا اگر مسیرهای تطبیقی ​​وجود نداشته باشد، با خطای «منبع یافت نشد» روبرو خواهید شد.

 

 

Register Routes (ثبت مسیر)

اکنون، پس از پیکربندی تمام مسیرهای کلاس RouteConfig، شما باید آن را در رویداد Application_Start()  در Global.asax ثبت کنید.




public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
              RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }



تصویر زیر نشان دهنده روند ثبت نام مسیر است.

Route configuration process in mvc

 

درآخر میتوانیم بگوییم که مسیریابی نقش مهمی در چارچوب MVC دارد که اگر بخواهیم یک مرور کلی کنیم به موارد زیر اشاره باید کرد:

  • Routing  در MVC آدرس URL را به فایل یا کلاس فیزیکی (کلاس کنترل کننده در MVC) تبدیل می کند.
  • Route، شامل الگو URL و اطلاعات دستیار است. الگوی URL بعد از نام دامنه شروع می شود.
  • مسیرها را می توان در کلاس RouteConfig پیکربندی کرد. مسیرهای چندگانه سفارشی نیز می توانند پیکربندی شوند.
  • محدودیت های مسیر، محدودیت های مقدار پارامترها را اعمال می کند.
  • مسیر باید در رویداد Application_Start در فایل Global.ascx.cs ثبت شود.

 

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

هنوز به پایان آموزش ASP.NET MVC نرسیده ایم. آموزش بعد راجع به Controller و   Action Method در پروژه MVC است. تا پایان این آموزش با ما همراه باشید.

"با تشکر، مجموعه ABLY"

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس