آشنایی با مفهوم Routing در MVC
دوشنبه 11 خرداد 1394در این مقاله قصد داریم توضیحی درباره چگونگی اجرا یک صفحه با آدرس دلخواه خود در سایت را بدهیم شاید شما هم تا به حال با این مورد روبرو شده اید که به جای اینکه یک اسم طولانی در صفحه ادرس بار(Url)خود داشته باشید از یک اسم کوتاه و دلخواه مورد نظر خود در آدرس بار استفاده کنید.
در این مقاله قصد داریم توضیحی درباره چگونگی اجرا یک صفحه با آدرس دلخواه خود در سایت را بدهیم شاید شما هم تا به حال با این مورد روبرو شده اید که به جای اینکه یک اسم طولانی در صفحه آدرس بار((Url خود داشته باشید از یک اسم کوتاه و دلخواه مورد نظر خود در آدرس بار استفاده کنید.
در ASP.NET MVC 5 یک قابلیت جدید با نام Attribute Routing افزوده شده است که به ما این اجازه را میدهد تا مسیر های سفارشی برای کنترلرها و اکشن متدهایمان با اضافه کردن یک Attribute با نام Route تعریف کنیم.
برای شروع به کار ابتدا یک پروژه از نوع Mvc5 ایجاد میکنیم.
ابتدا روی مدل راست کلیک کرده و یک کلاس با اسم Person ایجاد میکنیم.
همان طور که از تصویر معلوم است روی Controller. راست کلیک کرده وAddرا میزنیم و یک کنترلر. ،از نوع Controller with views, using Entity Framework MVC 5 ایجاد میکنیم.
حال اگر از برنامه خود اجرا بگیرید ادرس زیر را در Url میبینید.
برای شروع به کار کافی است ابتدا در App_Start وارد کلاس RoutConfig.cs شده و routes.MapMvcAttributeRoutes(); را به کلاس RoutConfig اضافه میکنیم.
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
حال برای فعال سازی صفت Rout وارد Web.config اصلی برنامه میشویم.
در قسمت system.webServer قطعه کد زیر را اضافه میکنیم
<system.webServer> <modules runAllManagedModulesForAllRequests="true"></modules> </system.webServer>
حال اکنون وارد کنترلر Home میشویم و بالای هر یک از متد ها از صفت Route (به معنای مسیر ) استفاده میکنیم.
[Route("Create.html")] public ActionResult Create() { return View(); }
و اکنون اگر از Create، View اجرا بگیریم با صفحه زیر روبرو میشویم.
برای حل این مشکل کافی است در Url،ا اسم مسیری که به متد مورد نظر دادیم را وارد کنیم
بخش دوم:
در این قسمت از مقاله قصد دارم که به شما بار گزاری یک صفحه با مسیردهی های مختلف را آموزش بدهم برای این کار کافی است ابتدا وارد کلاس RoutConfig شده و تغیراتی در متد RegisterRoutes ایجاد کنیم.
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // new routing routes.MapRoute("Default", "{type}/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new RouteValueDictionary { { "type", "Customer|Admin" } }); }
همان طور که در کد بالا مشاهده میکنید در routes.MapRoute یک پارامتر ورودی دیگری به نام type ایجاد کردیم که کاربر برای ورود به سایت قبل از اسم کنترلر باید اسم هایی را که به type دادیم را در url وارد کند
RouteValueDictionary : یک شی است که شامل خواص مربوط به یک پارامتر میشود.
حال اگر از برنامه اجرا بگیرم به مشکل زیر رو به رو میشویم.
برای حل این مشکل هم میتوان از کلمه ، Admin و هم از Customer قبل از اسم کنتلرر استفاده کنیم
و در آخر این نکته را یاداوی کنم که دوروش مذکور، دو روش کاملا متفاوت در مسیریابی است
- ASP.net MVC
- 4k بازدید
- 5 تشکر