مجتمع فنی و آموزشی پارسی ماد

مرکـز تخصصی مهارت آمـوزی در استان قـم

ساعت کار آموزشگاه: شنبه تا پنجشنبه 8 صبح تا 10 شب

آموزش سیستم مسیردهی (Routing) در ASP.Net MVC

1727 بازدید تاریخ انتشار: 27 آذر 1398 دسته بندی ها:فناوری اطلاعات

آموزش سیستم مسیردهی (Routing) در ASP.Net MVC

آموزش سیستم مسیردهی (Routing) در ASP.Net MVC:

در نرم افزارهای وب ASP.Net Web Form، هر آدرس (URL) بایستی متناظر با یک فایل فیزیکی .aspx باشد. برای مثال، یک آدرس با مشخصات http://domain/student info.aspx بایستی متناظر با فایل فیزیکی آن، یعنی student info.aspx که شامل تگ ها و کدهای برنامه نویسی لازم جهت نمایش صفحه و تولید خروجی جهت مرورگر است، باشد. ورژن های بالاتر، ASP.Net سیستم مسیردهی یا Routing را برای حذف نیاز اتصال هر URL به یک فایل فیزیکی ابداع کرد. Routing ما را قادر می سازد تا الگوهای مسیردهی (URL Pattern) هایی را ایجاد کنیم، که هر کدام ما را به سمت یک پردازشگر درخواست (request handler) می فرستد. این پردازشگر درخواست می تواند یک فایل یا کلاس (Class) در سطح برنامه باشد. در پلتفرم ASP.NET Web Form، پردازشگر درخواست یا request handler یک فایل .aspx بوده و در MVC یک کلاس کنترلر (Controller Class) یا متد اجرایی (Action Method) است. برای مثال، آدرس http://domain/students را در پلتفرم ASP.NET Web Form می توان به فایل http://domain/student.aspx منتقل کرده و در مدل MVC همان URL را به کنترلر Student Controller و یا متد اجرایی Index action وصل نمود.

آموزش مسیر (Route) در ASP.NET MVC :

در ASP.NET MVC یک مسیر یا Route الگوی آدرس دهی یا URL Pattern و مدیر پردازشگر دستور یا handler را مشخص می کند. تمامی مسیرهای تنظیم شده در یک برنامه، درون جدول Route Table ذخیره شده و توسط موتور مسیردهی (Routing Engine) برای تعیین کلاس مدیریت کننده (handle class) و یا فامیل مورد نظر جهت اجرای درخواست (Request) وارد شده، استفاده می شود. شکل زیر، نحوه عملکرد سیستم مسیردهی (Routing) را در ASP.NET MVC نشان داده است :

آموزش سیستم مسیردهی (Routing) در ASP.Net MVC

آموزش تنظیم یک مسیر Configure Route در MVC :

هر برنامه MVC بایستی حداقل یک مسیر را تنطیم (ثبت یا Register) کند که این مسئله به صورت پیش فرض توسط MVC انجام می شود. شما می توانید مسیر یا مسیرهای مورد نظر خود را درون کلاس RouteConfig که در فایل Route Config.cs و درون پوشه APP_Start قراردارد، ثبت کنید. دیاگرام زیر، نحوه تنظیم یک مسیر یا Route را در کلاس Route Config Class نشان داده است :

آموزش تنظیم یک مسیر  Configure Route در MVC

همانطور که در تصویر فوق مشاهده می کنید، هر مسیر یا Route با استفاده از افزونه متد MapRoute() از مجموعه RouteCollection تنظیم شده است. نام این مسیر “Default”، الگوی URL آن به صورت “{controller}/{action}/{id}” بوده و مقادیر پیش فرض برای کنترلر (Controller)، متد اجرایی (action method) و شناسه (id) آن نیز تعیین شده است.
این مقادیر پیش فرض تعیین می کنند چنانچه در آدرس URL ای که به صورت Request ارسال شده است، مقدار خاصی تعیین نشده باشد از چه مقادیری برای خواص Controller، action method و id استفاده شود.
با همین روش، می توانید سایر مسیرها یا Routes های خود را با استفاده از متد MapRoute مجموعه RouteCollection ایجاد کنید. این مجموعه RouteCollection درواقع یکی از خواص (Property) کلاس RouteTable می باشد.

آموزش الگوی آدرس دهی (URL Pattern) در ASP.NET MVC :

الگوی آدرس دهی در ASP.Net، شامل آدرس و متن بعد از نام دامنه سایت در URL می شود. برای مثال الگوی آدرس دهی “{controller}/{action}/{id}” به صورت localhost:1234/{controller}/{action}/{id} نمایش داده خواهد شد. هر چیزی بعد از “localhost:1234” به عنوان نام کنترلر (Controller name) در نظر گرفته می شود. همچنین هر مقداری بعد از نام کنترلر به عنوان نام متد اجرایی action name و سپس از نیز به عنوان پارامتر id محسوب خواهد شد.
تصویر زیر نحوه تعریف یک الگوی آدرس دهی (Routing) در ASP.Net MVC را نشان می دهد :

آموزش الگوی آدرس دهی (URL Pattern) در ASP.NET MVC

اگر آدرس (URL) شامل چیزی پس از نام دامنه سایت نباشد، در آن صورت کنترلر و متد اجرایی (action method) پیش فرض سایت درخواست را مدیریت (handle) می کند. برای مثال، آدرس http://localhost:1234 توسط کنترلر HomeController و متد اجرایی Index method و با پارامترهای پیش فرض آن ها مدیریت خواهد شد.
در جدول زیر چندین URL را مثال زده و در هر کدام مشخص کرده ایم که در صورت وارد کردن این آدرس توسط کاربر، چه متد اجرایی، کنترلر و پارامتر Id ای، پردازش URL را مدیریت خواهد کرد :

آموزش الگوی آدرس دهی (URL Pattern) در ASP.NET MVC
URL
Controller
Action
Id
http://localhost/home
HomeControlle
Index
null
http://localhost/home/index/123
HomeControlle
Index
123
http://localhost/home/about
HomeControlle
About
null
http://localhost/home/contact
HomeControlle
Contact
null
http://localhost/student
StudentController
index
null
http://localhost/student/edit/123
StudentController
Edit
123
 

آموزش تعیین مسیرهای چندگانه در ASP.Net MVC :

شما می توانید با استفاده از متد افزونه Map Route یک مسیر دلخواه را برای سایت خود ایجاد کنید. برای این منظور بایستی حداقل دو پارامتر را در متد Map Route تعیین کنید، نام مسیر (route name) و الگوی مسیر آن (URL Pattern) تعیین پارامتر در این متد دلخواه است و می توانید آن را تعیین کرده یا به صورت پیش فرض رها کنید.
شما می توانید چندین مسیر دلخواه را با نام های مختلف ایجاد کنید. برای این منظور به مثال زیر آن مسیر “student” را ثبت کرده ایم، دقت کنید :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 Pattern) برای مسیر student به صورت students/{id} می باشد که تعیین می کند هر آدرس URL ای که با domain Name/students شروع شود، بایستی توسط کنترلر Student Controller مدیریت شود.
دقت داشته باشید که ما متد اجرایی یا {action} را در الگوی URL فوق تعیین نکرده ایم، به خاطر این که می خواهیم هر مسیر URL ای که با student شروع می شود، همواره از متد اجرایی Index action کنترلر Student Controller استفاده کند.
درواقع ما کنترلر و متد اجرایی پیش فرض را برای درخواست های URL ای که با domainname/students شروع می شوند، تعیین نموده ایم.
چهارچوب کاری MVC هر یک از مسیرهای تعیین شده را به ترتیب ارزیابی می کند. در ابتدا، مسیر اول تنظیم شده را بررسی کرده و چناچه URL وارد شده الگوی آدرس به ترتیب دومین و یا مسیرهای دیگر تنظیم شده را چک می کند.
در کد مثال فوق، موتور مسیردهی MVC، ابتدا مسیر تعیین شده برای student را بررسی کرده و چنانچه URL وارد شده با /students شروع نشده باشد، مسیر دوم را به عنوان مسیر default یا پیش فرض در نظر می گیرد.
جدول زیر نشان می دهد که چگونه URL های مختلف به مسیر students متصل یا نگاشت (mapping) می شوند :

آموزش تعیین مسیرهای چندگانه در ASP.Net MVC
URL
Controller
Action
Id
http://localhost/students/123
StudentController
Index
123
http://localhost/students/index/123
StudentController
Index
123
http://localhost/students?Id=123
StudentController
Index
123

آموزش اعمال محدودیت بر روی مسیرها (Routes) در ASP.Net MVC :

می توانید برای مقدار پارامترهای یک مسیر (route) به وسیله محدودکننده های مسیر، محدودیت های موردنظر خود را اعمال کنید. برای مثال، در کد زیر یک محدودیت را بر روی شناسه پارامتر (id Parameter) مسیر موردنظر خود اعمال کرده و تعیین کرده ایم این id بایستی حتما از نوع عددی باشد :

1
2
3
4
5
6
7
8
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 parameter) مسیر یک مقدار غیر عددی را وارد کنید، درخواست به وسیله مسیر دیگری مدیریت خواهد شد و اگر هم مسیر مناسبی برای آن پیدا نشود، خطای “The resource coud Not be found” به معنای پیدا نکردن صفحه مورد نظر رخ خواهد داد.

آموزش ثبت مسیرها (Register Routes) در ASP.Net MVC :

اکنون پس از این که تمامی مسیرها را در کلاس RouteConfig Class تعیین کردید، بایستی آن ها را در رویداد Application_Start() کلاس Global.asax ثبت یا Register نمایید. با این کار تمامی مسیرهای مورد نظر شما در جدول Route Table قرار خواهند گرفت، کد زیر نحوه ثبت مسیرها در Asp.Net MVC را آموزش داده است :

1
2
3
4
5
6
7
public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
              RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }

همچنین دیاگرام زیر نیز، پروسه ثبت مسیرها را در جدول مربوط نشان می دهد :

آموزش ثبت مسیرها (Register Routes) در ASP.Net MVC

بنابراین، متوجه شدید که مسیردهی یا routing نقش بسیار مهمی در پروژه های MVC دارد.

نکات خلاصه درس :

  1. سیستم مسیردهی (Routing) نقش بسیار مهمی در چهارچوب کاری MVC باز می کند. سیستم مسیردهی یا Routing آدرس ها یا URL را به فایل های فیزیکی یا کلاس ها (کلاس کنترلر Countroller Class) در MVC نگاشت یا در اصطلاح متصل می کند.
  2. هر مسیر شامل الگوی آدرس (URL Pattern) و مدیریت کننده اطلاعات یا handler است. الگوی آدرس پس از نام دامنه سایت شروع می شود.
  3. تمامی مسیرها درون کلاس RouteConfig Class تنظیم شده و برای برخی مسیرهای دلخواه می توانید چندین حالت مختلف را در نظر بگیرید.
  4. محدود کننده های مسیر یا Route Constraint محدودیت هایی را بر روی مقدار پارامتر دریافتی در URL اعمال می کنند.
  5. تمامی مسیرها بایستی در رویداد Application_Start فایل Global.ascx.cs ثبت شوند.

در زمینه کامپیوتر پاسخگوی شما هستیم
تمامی حقوق مادی و معنوی متعلق به آموزشگاه پارسی ماد می باشد (طراح و برنامه نویس: مهندس مهدی بیاتی)