1

我想添加一个自定义路线,但我无法让它工作。我想使用普通路由,除非它遇到特定的控制器,否则使用不同的可选参数而不是 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部分(上面那行)的重点吗?

4

1 回答 1

1

您的代码是正确的,但您的订单不正确。

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

于 2013-01-17T06:31:28.200 回答