mvc 4中的多条路线

时间:2014-10-31 12:42:58

标签: asp.net-mvc-4 routing asp.net-mvc-routing

我想在我的应用程序中使用多个路由,并且我正在使用以下代码。

     routes.MapRoute(
        name: "Custom",
        url: "{lang}/{action}/{id}/{Title}/{type}",
        defaults: new
        {
            controller = "Main",
            action = "Default",
            id = UrlParameter.Optional,
            Title = UrlParameter.Optional,
            lang = "en",
            type = UrlParameter.Optional
        }
    );
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new
        {
            controller = "Admin",
            action = "Login",
            id = UrlParameter.Optional
        }
    );

问题 这适用于/en/Default/id/title/type这里default是我的操作名称。 用户/Admin/Login何时抛出服务器错误

2 个答案:

答案 0 :(得分:0)

我认为你必须为此使用路线约束。

可能跟随。它没有经过测试,但路线约束可以解决您的问题。

routes.MapRoute(
        name: "Custom",
        url: "{lang}/{action}/{id}/{Title}/{type}",
        defaults: new
        {
            controller = "Main",
            action = "Default",
            id = UrlParameter.Optional,
            Title = UrlParameter.Optional,
            lang = "en",
            type = UrlParameter.Optional
        },
        new { lang= "[en|us]"}
       }

答案 1 :(得分:0)

这在两种情况下均可正常工作。

            routes.MapRoute(
                "Custom",
                "{lang}/{action}/{id}/{Title}/{type}",
                new
                {
                    controller = "Main",
                    action = "Default",
                    id = UrlParameter.Optional,
                    Title = UrlParameter.Optional,
                    lang = "en",
                    type = UrlParameter.Optional
                }, new { lang = @"(en)|(hi)|(es)" }
            );
            routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
              new
              {
                  controller = "Main",
                  action = "Default",
                  id = UrlParameter.Optional
              }
          );