В MVC маршрутизирането е процес на съпоставяне на заявката на браузъра към действието на контролера и връщане на отговор обратно. Всяко MVC приложение има маршрутизация по подразбиране HomeController . Можем да зададем персонализирано маршрутизиране за новосъздадения контролер.
The RouteConfig.cs файл се използва за задаване на маршрутизиране за приложението. Първоначално съдържа следния код.
// RouteConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcApplicationDemo { 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 } ); } } }
Съгласно този инсталационен файл, действието Index на домашния контролер ще се третира по подразбиране. Първият път, когато приложението се стартира, то произвежда следния изход.
Ако погледнем адресната лента, тя съдържа само локален хост: 52174 . Няма контролер и действието е указано, защото MVC рутерът картографира контролера от RouteConfig.cs.
Ако изрично въведем имена на контролери и действия в адресната лента, тя ще пренасочи към същото действие. The localhost:52174/Начало/Индекс ще произведе същия изход към браузъра.
Сега нека създадем нов контролер и да го конфигурираме към файла с маршрута. Щракнете с десния бутон върху Контролер папка и изберете добавяне след това контролер. Ще изскочи прозорец. изберете празен контролер, както направихме на екранната снимка.
Този контролер има някакъв изходен код, заменете го със следния код.
// StudentsController.cs
using System.Web.Mvc; namespace MvcApplicationDemo.Controllers { public class StudentsController : Controller { public ContentResult Index() { return Content('This is default student page'); } } }
За да конфигурираме този контролер във файла с маршрута, направихме някои промени в RouteConfig.cs файл. Кодът е даден по-долу.
// RouteConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcApplicationDemo { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute('{resource}.axd/{*pathInfo}'); routes.MapRoute( name: 'Students', url: '{controller}/{action}/{id}', defaults: new { controller = 'Students', action = 'Index', id = UrlParameter.Optional } ); } } }
Това приложение произвежда същия резултат за локален хост: 52174 и localhost:52174/Студенти/Индекс
Тъй като модулът за маршрут на рамката MVC картографира URL адреса на браузъра към файла RouteConfig на проекта.
Изход:
c програмен масив от низове
Това е същото като по-горе, дори сме въвели изрично имена на контролери и действия.