要在ASP.NET MVC4中定义自己的URL路由,我相信你修改Global.asax.cs所以它看起来像......
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1 {
public class MvcApplication : System.Web.HttpApplication {
public static void RegisterRoutes(RouteCollection routes) {
routes.MapRoute( .....
但是我无法找到的是你如何添加多条路线 - 例如你刚刚再次致电routes.MapRoute(....)
吗?
此外,这是否会覆盖隐藏的默认路由定义?如果我想保留它,我还需要定义它吗?
答案 0 :(得分:3)
我只想添加到Embram的答案中,最佳做法是添加从最详细到一般的路线:
routes.MapRoute(
name: "Route1",
url: "Mail/{id}",
defaults: new { controller = "Home", action = "Mail", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Route2",
url: "{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 1 :(得分:1)
要添加多条路线,请检查此adding_routes_to_an_mvc_application。如你所说,再次打电话routes.MapRoute(....)
。
要考虑MVC路由的一个方面是订购路线。您的上一条路线必须尽可能通用,并且您之前的路线必须尽可能具体。(请查看ASP.NET MVC Default route)
这会覆盖隐藏的默认路由定义吗?
我不这么认为,但你的确认会在默认MVC路线之前先检查。(查看SO post)
答案 2 :(得分:1)
您似乎对中的在MVC 4应用程序中定义路由感到困惑。
你global.asax
应该是(默认情况下):
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
}
RouteConfig
中/App_Start/RouteConfig.cs
的定义如下(默认情况下):
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 }
);
}
}
了解这一点,您应该能够根据需要编辑路线。