خانه دانلود خبرنامه سفارش سایت درباره ما ارتباط با ما حمایت از ما تبلیغات

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

آموزش کار با سیستم مسیردهی Routing در ASP.Net MVC

به طور کلی، مسیردهی یا Routing د ASP.Net MVC به عملیات اتصال یک درخواست HTTP Request به کنترلر Controller مناسب آن گفته می شود.
دستورات و کدهای لازم جهت سیستم مسیردهی Routing در اسمبلی System.Web.Routing تعریف شده است.
راهنمایی راهنمایی :

درواقع اسمبلی System.Web.Routing بخشی از ASP.Net MVC نیست. این اسمبلی بخشی از سیستم ASP.Net Runtime بوده که همزمان با .NET ورژن 3.5 ارائه شده است.


نکته نکته :

اسمبلی System.Web.Routing هم توسط چهارچوب کاری MVC و هم توسط فریم ورک ASP.Net Dynamic Data استفاده می شود.

تنظیمات مربوط به سیستم مسیردهی Routing پروژه، درون فایل Global.asax هماند کد فایل زیر تعریف می شود. این فایل همزمان با ساخت یک پروژه جدید MVC در پوشه اصلی سایت، ایجاد می شود :
syntax
کد
                                        using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

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

نکته نکته مهم :

چهارچوب کاری MVC، از اطلاعات سیستم مسیردهی یا Routing برای انتقال هر درخواست Request به کنترلر Controller متناسب آن، استفاده می کند. تمامی مسیرهای درون برنامه را بایستی با فرمت مورد نظر، درون فایل RouteConfig.cs درون پوشه App_Start به صورت زیر تعریف کنید. هر پروژه MVC، دارای یک مسیر پیش فرض یا default اولیه است، که نحوه مسیردهی کلی را مشخص می کند.


syntax
کد
                                        using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MVCFirstApp {
   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});
      }
   }
}
                                    
در فایل RouteConfig.cs تمامی مسیرهای مورد نظر خود را با فرمت استاندارد، تعیین می کنید. این مسیرها (Routes) هر URL ورودی را به کنترلر Action مربوط نگاشت (map) می کند. می دانید که هر کنترلر می تواند یک یا چندین متد اجرایی (Action) داشته باشد. به همراه URL می توان پارامترهای مورد نظر را نیز به کنترلر Action ارسال کرده و با این کار اطلاعات را به View پاس دهید. در هنگام ایجاد یک پروژه جدید MVC، برنامه دارای یک مسیر پیش فرض به نام default در فایل RouteConfig.cs است. سایر مسیرهای مورد نظر را بایستی بالای این Route و با ساختار کلی زیر تعریف کنید :
+syntax
در ساختار فوق، controller تعیین کننده نام کنترلر پردازش کننده URL و Action نیز نام متد اجرایی تولید کننده View می باشد. همچنین می توانید یک یا چندین پارامتر را بعد از نام Action تعیین کنید. برای نمونه به مسیر (Route) زیر دقت کنید :
مثال+ توضیح+

توضیح بیشتر مسیر (Route) در MBC

همانطور که اشاره کردیم، برنامه های MVC از سیستم مسیردهی ASP.NET استفاده می کنند که تصمیم می گیرد هر URL توسط چه کنترلر و action ای اجرا شود.
زمانی که ویژوال استودیو، پروژه جدید MVC را ایجاد می کند ، یک یا چنیدن مسیر پیش فرض را برای سایت تعریف می کند.
نکته کاربردی : هنگامی که برای اولین برنامه، پروژه MVC را اجرا (Run) می کنید، ویژوال استودیو سایت را توسط کننرلر Home و متد Index و در یک Port تصادفی (مثلا در عکس زیر پورت +پورت) باز می کند. این صفحه درواقع همان صفحه خانه یا Default سایت است.
توضیح بیشتر مسیر (Route) در MBC
مثال : در کد فایل RouteConfig.cs فوق، یک URL پیش فرض تعیین شده بود به نام default، که URL ها را به کنترلر Home و متد اجرایی Index ارجاع می داد. بنابراین هر یک از آدرس های زیر را که بزنید، نتیجه یکسانی در مرورگر نمایش داده شده و صفحه اصلی سایت باز می شود :
http://localhost:63664/Home/
http://localhost:63664/Home/Index
نتیجه : هرگاه آدرس های مثل http://mysite/ یا http://mysite/Home در مرورگر درخواست شوند، برنامه توسط کنترلر Home و متد Index آن خروجی تولید می کند.
آموزش کار با سیستم مسیردهی Routing در ASP.Net MVC
همانطور که در مثال فوق مشاهده کردید، به صورت پیش فرض، پروژه MVC دارای یک کنترلر به نام HomeController بوده که نقطه شروع اجرای سایت است.
مسیر پیش فرضی که ویژوال استودیو برای پروژه ایجاد می کند، تصور می کند شما همواره از این قاعده پش فرض برای URL های خود استفاده می کنید. حال اگر می خواهید قواعد خاص خود را در مسیردهی داشته باشید، بایستی مسیرهای دلخواه خود را به پروژه اضافه کنید.

آموزش ایجاد یک مسیر (Route) جدید در MVC

همانطور که گفتم، می توانید هر مسیر دلخواهی را برای پروژه خود تعیین کنید. اگر از نام متفاوتی برای action می خواهید استفاده کرده یا نیاز دارید همراه URL، پارامترهای داده ای را به صفحه پاس دهید، بایستی از مسیرهای دلخواه یا Custan Ruote استفاده کنید.
بیایید یک مثال ساده بزنیم. فرض کنیم صفحه ای دارید که می خواهید اطلاعات دانشجویان (Students) را نمایش دهد. برای این منظور می توان مسیری مثل زیر را تعیین کرد :
syntax
کد
routes.MapRoute(
   "Process",
   "Process/{action}/{id}",
   defaults: new{
      controller = "Process", action = "List ", id = UrlParameter.Optional}
);
                                    
همانطور که می بینید، نام مسیر را Students تعیین کرده ایم. همچنین هنگامی که شخصی URL ای مثل Students/Action/Id را درخواست می کند، به کنترلر Student ارجاع می شود. همچنین می توانیم action به نام List را به جای متد Index به عنوان متد پیش فرض کنترلر انتخاب نماییم.
حال اگر درخواستی مثل localhost/Student به مرورگر ارسال شود، موتور مسیردهی MVC کاربر را به کنترلر Student و متد اجرایی پیش فرض آن یعنی List ارجاع می دهد.
در کد فایل زیر، می توانید محتویات کامل جدید فایل RouteConfig.cs را مشاهده کنید :
syntax
کد
                                        using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MVCFirstApp{
   public class RouteConfig{
      public static void RegisterRoutes(RouteCollection routes){
         routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
			
         routes.MapRoute(
            "Process", "Process/{action}/{id}",
            defaults: new{
               controller = " Process", action = "List ", id =
               UrlParameter.Optional});
					
         routes.MapRoute(
            name: "Default", url: "{controller}/{action}/{id}",
            defaults: new{
               controller = "Home", action = "Index", id =
               UrlParameter.Optional});
      }
   }
}
                                    

نحوه کار با مسیر (Route) جدید ایجاد شده :

مرحله اول : برای مشاهده خروجی و کار با مسیر (Route) جدید ایجاد شده، آدرس زیر را در مرورگر وارد نمایید :
http://localhost:63664/Student
آموزش ایجاد یک مسیر (Route) جدید در MVC
خواهید دید که صفحه خطای 404 یا پیدا نکردن صفحه را صادر می کند، زیرا به دنیال کنترلر StudentController گشته و آن را پیدا نکرده است.
مرحله دوم : همانند تصویر زیر، کلیک راست بر روی پوشه Controller در منوی Solution Explorer و زدن دکمه Add و Controller، کنترلر Student Controller را به صفحه اضافه کنید :
آموزش ایجاد یک مسیر (Route) جدید در MVC
با زدن دکمه Add، پنجره Scaffold به صورت زیر باز می شود :
آموزش ایجاد یک مسیر (Route) جدید در MVC
مرحله سوم : گزینه MVC5Controller-empty را انتخاب کرده و دکمه Add را بزنید. پنجره تعیین نام کنترلر به صورت زیر باز می شود :
آموزش ایجاد یک مسیر (Route) جدید در MVC
مرحله چهارم : نام کنترلر را StudentController تعیین کرده و دکمه Add را بزنید.

نکته نکته مهم :

طبق قواعد MVC، نام تمامی کنترلرها، بایستی با واژه ی کلیدی Controller پایان یابد و درون پوشه Controller نیز قرار بگیرند.

اکنون یک فایل جدید C# به نام StudentController.cs را در پوشه Controllers برنامه مشاهده می کنید، که جهت ویرایش درون ویژوال استودیو، به صورت زیر باز شده است :
آموزش ایجاد یک مسیر (Route) جدید در MVC
حال به دلیل اینکه متد اجرایی پیش فرض کنترلر StudentController، متد List است، بایستی آن را به جای Index به فایل اضافه کنیم.
مرحله پنجم : مقدار نوع برگشتی متد Index را از ActionResult به String و نام آن را به List تغییر دهید. همچنین در انتهای کد متد، با کلمه کلیدی return، یک متن را به عنوان خروجی متد، تعیین نمایید. همانند کد زیر :
syntax
کد
using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCFirstApp.Controllers{
   public class ProcessController : Controller{
      // GET: Process
      public string List(){
         return "This is Process page";
      }
   }
}
                                    
مرحله ششم : اگر مجددا برنامه را اجرا (Run) نمایید، خواهید دید که مسیر پیش فرض، مجددا باز خواهد شد.
حال اگر آدرس +آدرس را وارد نمایید، خواهید دید کنترلر Student و متد List اجرا شده و خروجی متنی زیر را بر روی صفحه تولید می کنند :
آموزش ایجاد یک مسیر (Route) جدید در MVC
© Copyright 2007 - 2026 Developer 1 ®
Designed & Owned By Mehrdad Fattahi
Pishgaman Toseye Web Company
استفاده از مطالب سايت با ذکر آدرس کامل و نام سايت بلامانع است .
این سایت در سامانه وزارت فرهنگ و ارشاد اسلامی ثبت شده است .