I MVC är routing en process för att mappa webbläsarbegäran till kontrollerns åtgärd och returnera svaret. Varje MVC-applikation har standardrouting för standard HomeController . Vi kan ställa in anpassad routing för nyskapad kontroller.
De RouteConfig.cs fil används för att ställa in routing för applikationen. Till en början innehåller den följande kod.
// 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 } ); } } }
Enligt den här inställningsfilen kommer indexåtgärden för Home Controller att behandlas som standard. Första gången, när programmet körs, producerar det följande utdata.
Om vi tittar på adressfältet innehåller det endast lokal värd: 52174 . Det finns ingen styrenhet och åtgärd specificeras eftersom MVC-routern mappar styrenheten från RouteConfig.cs.
Om vi uttryckligen anger kontrollant- och åtgärdsnamn i adressfältet kommer den att omdirigera till samma åtgärd. De localhost:52174/Home/Index kommer att producera samma utdata till webbläsaren.
Låt oss nu skapa en ny styrenhet och konfigurera den till ruttfilen. Högerklicka på Kontroller mapp och välj lägg till sedan kontroller. Det kommer att dyka upp ett fönster. välj en tom kontroller som vi gjorde i skärmdumpen.
Denna styrenhet har viss källkod, åsidosätt denna med följande kod.
// StudentsController.cs
using System.Web.Mvc; namespace MvcApplicationDemo.Controllers { public class StudentsController : Controller { public ContentResult Index() { return Content('This is default student page'); } } }
För att konfigurera denna styrenhet i ruttfilen har vi gjort några ändringar i RouteConfig.cs fil. Koden ges nedan.
// 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 } ); } } }
Denna applikation producerar samma utdata för lokal värd: 52174 och localhost:52174/Studenter/Index
Eftersom ruttmodulen i MVC-ramverket mappar webbläsarens URL till projektets RouteConfig-fil.
Produktion:
java punkt
Detta är samma som ovan, även om vi har angett kontroll- och åtgärdsnamn explicit.