1

我目前在页面上/Customer/Edit/13244

当我@Url.Action("Edit", "Customer")在同一页面上使用它返回我/Customer/Edit/13244,但我希望它返回/Customer/Edit/

请告诉我如何解决这个问题。

4

2 回答 2

3

这是 MVC 的一个“特性”,许多人认为它不自然,并且之前被报告为 bug

微软官方回应:

最终,如果您想最大程度地控制为 URL 生成的内容,可以考虑以下几个选项:

  1. 使用命名路由来确保只有你想要的路由会被用来生成 URL(这通常是一个很好的做法,尽管它在这个特定的场景中没有帮助)
  2. 明确指定所有路由参数 - 甚至是您希望为空的值。这是解决这个特定问题的一种方法。
  3. 您可以使用 Razor 的 ~/ 语法或调用 Url.Content("~/someurl") 来确保您尝试生成的 URL 不会发生额外(或意外)处理,而不是使用路由来生成 URL。

实际上,只有当您尝试重新使用操作方法名称时,此错误才会出现。如果你使用不同的动作方法名称而不是Edit在它后面没有的情况下id,这个问题就会神奇地消失。

于 2015-09-22T07:44:21.060 回答
2

您将需要使用(假设您使用默认路由id = UrlParameter.Optional

@Url.Action("Edit", "Customer", new { id = "" })
于 2015-09-22T07:36:07.537 回答