我目前在页面上/Customer/Edit/13244
。
当我@Url.Action("Edit", "Customer")
在同一页面上使用它返回我/Customer/Edit/13244
,但我希望它返回/Customer/Edit/
。
请告诉我如何解决这个问题。
我目前在页面上/Customer/Edit/13244
。
当我@Url.Action("Edit", "Customer")
在同一页面上使用它返回我/Customer/Edit/13244
,但我希望它返回/Customer/Edit/
。
请告诉我如何解决这个问题。
这是 MVC 的一个“特性”,许多人认为它不自然,并且之前被报告为 bug。
微软官方回应:
最终,如果您想最大程度地控制为 URL 生成的内容,可以考虑以下几个选项:
- 使用命名路由来确保只有你想要的路由会被用来生成 URL(这通常是一个很好的做法,尽管它在这个特定的场景中没有帮助)
- 明确指定所有路由参数 - 甚至是您希望为空的值。这是解决这个特定问题的一种方法。
- 您可以使用 Razor 的 ~/ 语法或调用 Url.Content("~/someurl") 来确保您尝试生成的 URL 不会发生额外(或意外)处理,而不是使用路由来生成 URL。
实际上,只有当您尝试重新使用操作方法名称时,此错误才会出现。如果你使用不同的动作方法名称而不是Edit
在它后面没有的情况下id
,这个问题就会神奇地消失。
您将需要使用(假设您使用默认路由id = UrlParameter.Optional
@Url.Action("Edit", "Customer", new { id = "" })