在ASP.NET MVC中,路由配置是非常重要的一部分,它决定了如何将用户请求映射到相应的控制器和动作方法。以下是一些常见的路由配置方法:
MapRoute
方法定义默认路由,它匹配所有不符合其他路由规则的请求。routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "CustomRoute",
url: "Custom/{parameter}",
defaults: new { controller = "Custom", action = "Index", parameter = UrlParameter.Optional }
);
routes.MapRoute(
name: "ParameterizedRoute",
url: "{controller}/{action}/{id}/{parameter}",
defaults: new { controller = "Parameterized", action = "Index", id = UrlParameter.Optional, parameter = UrlParameter.Optional }
);
routes.MapRoute(
name: "NamedRoute",
url: "Custom/{parameter}",
defaults: new { controller = "Custom", action = "Index", parameter = UrlParameter.Optional },
constraints: new { parameter = @".+" }
);
在引用路由时,可以使用RouteName
属性指定路由的名称。
@Url.RouteUrl("NamedRoute", new { parameter = "value" })
routes.MapRoute(
name: "ConstrainedRoute",
url: "User/{id}",
defaults: new { controller = "User", action = "Details" },
constraints: new { id = @"\d+" }
);
MapRoute
方法的routePrefix
参数为所有路由添加前缀。routes.MapRoute(
name: "PrefixRoute",
url: "Admin/{controller}/{action}/{id}",
defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional },
routePrefix: "Admin"
);
IgnoreRoute
方法忽略特定的URL模式,使其不匹配任何路由规则。routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
这些是ASP.NET MVC中常见的路由配置方法。根据应用程序的需求,可以灵活地组合和使用这些方法来定义适合的路由规则。