ASP.NET MVC @ Url.Action包括当前路由数据

时间:2011-08-05 01:26:09

标签: asp.net-mvc-3

假设我:

  • 在我的{controller}/{action}/{id}文件中有一条路由Global.asax
  • 控制器Foo和操作Bar(String id)返回视图。
  • 包含由@Url.Action("bar", "foo")呈现的网址的非常简单的视图 - 明确指出id
  • 如果我浏览到/foo/bar/test,则视图会将呈现的网址显示为/foo/bar/test。我原本应该/foo/bar,因为我没有为id指定值。

为什么它会包含当前的id,即使我没有指定它,是否有任何方法可以防止这种情况(除了直接“硬编码”URL)?

2 个答案:

答案 0 :(得分:1)

当您将/foo/bar/test放入浏览器地址栏时,您确实指定了id的值。您实际上是在foo控制器中使用参数“test”调用方法Bar。直接浏览时,您的简单视图无关紧要。

要回答您的上一个问题,您可能需要重新审视使​​用MVC的方式。

答案 1 :(得分:0)

我认为这是MVC3中的回归错误,正如Phil Haack在此讨论的那样:http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

这是正确答案:https://stackoverflow.com/a/7133304/27938