带有可选参数的附加MVC路由

时间:2013-01-17 03:01:51

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

我想添加一个自定义路由,但我无法让它工作。 我想使用普通路由,除非它遇到特定的控制器,使用不同的可选参数而不是id。

在我所在的地区,存在:

context.MapRoute(
     "Admin_default",
     "Admin/{controller}/{action}/{id}",
     new { action = "Index", id = UrlParameter.Optional }
     );

以上我尝试添加:

context.MapRoute(
           "Admin_Users",
           "Admin/Users/{action}/{username}",
           new { action = "Index", username = UrlParameter.Optional }
       );

在代码中,我用以下内容调用页面:

@Html.ActionLink("Edit", "Edit", new { username=user.UserName })

并且有效,但链接显示为 / Admin / Users / Edit /?username

我希望: / Admin / Users / Edit / username

但是,我想为所有其他页面保留相同的路径,即:

/Admin/Shop/Products/Edit/1

使用默认路由

修改

我通过在我的路线中添加控制器=“用户”来实现它。

context.MapRoute(
       "Admin_Users",
       "Admin/Users/{action}/{username}",
       new { controller="Users", action = "Index", username = UrlParameter.Optional }
   );

我认为这是它的URL部分(上面一行)的重点?

1 个答案:

答案 0 :(得分:1)

您的代码是正确的,但您的订单却没有。

ASP.NET MVC使用适用的第一个路由。在您的情况下,通用路线将适用。更改订单,您的“管理员/用户/ ...”路线将具有更高的优先级。