【问题标题】:Additional MVC Route with Optional Parameter带有可选参数的附加 MVC 路由
【发布时间】:2013-01-17 03:01:50
【问题描述】:

我想添加自定义路线,但无法正常工作。 我想使用普通路由,除非它遇到特定控制器,否则使用不同的可选参数而不是 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

使用默认路由

编辑

我通过在我的路由中添加 controller="Users" 来让它工作。

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

我认为这就是 URL 部分(上面那行)的重点吗?

【问题讨论】:

  • 请不要将“ASP.NET MVC”简单地称为“MVC”。一种是框架,另一种是与语言无关的设计模式。这就像调用 IE - “互联网”
  • 别担心,我使用了 aspnet.mvc 标签。对这个问题有什么建议吗?
  • ...实际上我使用了标签,如果您查看编辑历史记录

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


【解决方案1】:

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

ASP.NET MVC 使用适用的 first 路由。在您的情况下,通用路线将适用。更改顺序,您的 'Admin/User/...' 路由将具有更高的优先级。

【讨论】:

  • 我认为这就是问题所在。它在上面或下面都不起作用,但我认为这是因为默认路由也适用于 Admin/Users 下的所有内容。
猜你喜欢
  • 1970-01-01
  • 2013-05-07
  • 2011-04-08
  • 2011-06-30
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多