با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش ASP.NET MVC ، را دنبال می کنند. در قسمت قبلی با ساختار یک پروژه MVC آشنا شدید ، در این بخش قصد داریم Routing در ASP.NET MVC و میسریابی در ASP.NET MVC را برای شما عزیزان توضیح دهیم . تا پایان این بخش همراه ما باشید.
در برنامه ASP.NET Web Forms (نسخه قدیم ASP.NET)، هر URL میبایست با فایل خاص aspx مطابقت داشته باشد. به عنوان مثال، برای دستیابی به آدرس http: //domain/studentsinfo.aspx باید فایل studentsinfo.aspx که حاوی کد و تگ های HTML برای مدیریت و اجرای درخواست های خاصی است ، وجود داشته باشد.
Id | Action | Controller | URL |
null | Index | HomeController | http://localhost/home |
۱۲۳ | Index | HomeController | http://localhost/home/index/123 |
null | About | HomeController | http://localhost/home/about |
null | Contact | HomeController | http://localhost/home/contact |
null | Index | StudentController | http://localhost/student |
۱۲۳ | Edit | StudentController | http://localhost/student/edit/123 |
شما همچنین می توانید چند مسیر سفارشی دیگر را با استفاده از متد MapRoute پیکربندی کنید. برای اینکار باید حداقل دو پارامتر را که عبارتند از نام مسیر و الگوی آدرس را در MapRoute ارائه دهید. مثال زیر را در نظر بگیرید که مسیر “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 } ); } |
Id | Action | Controller | URL |
۱۲۳ | Index | StudentController | http://localhost/student/123 |
۱۲۳ | Index | StudentController | http://localhost/student/index/123 |
۱۲۳ | Index | StudentController | http://localhost/student?Id=123 |
شما همچنین می توانید محدودیت های مقدار پارامتر را با تنظیم route constraints اعمال کنید. به عنوان مثال، مسیر زیر، یک محدودیت در پارامتر id را اعمال می کند که مقدار شناسه باید عددی باشد.
1 2 3 4 5 6 | 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 داده شود، این درخواست با الگوی مسیریابی دیگری بررسی می شود یا اگر مسیرهای تطبیقی وجود نداشته باشند، خطای “The resource could not be found” نمایش داده می شود.
اکنون، پس از پیکربندی تمام مسیرها در کلاس Configuration ، باید آن را در رویداد Application_Start در Global.asax ثبت کنید. تا تمام الگوهای مسیریابی که تعریف شده اند به Route Table نیز اضافه شوند .
1 2 3 4 5 6 7 | public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { RouteConfig.RegisterRoutes(RouteTable.Routes); } } |
شکل زیر نشان دهنده روند ثبت مسیر است.
در این بخش با مسیریابی (Routing) در ASP.NET MVC آشنا شدید و یاد گرفتید که چگونه الگوی مسیریابی را تغییر دهید ، در بخش بعدی قصد داریم شما را با Controller در ASP.NET MVC آشنا کنیم.