如何向MVC4添加多个路由

时间:2013-08-11 15:38:08

标签: asp.net-mvc-4 routing

要在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(....)吗?

此外,这是否会覆盖隐藏的默认路由定义?如果我想保留它,我还需要定义它吗?

3 个答案:

答案 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 }
        );
    }
}

了解这一点,您应该能够根据需要编辑路线。