假设我:
{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)?
答案 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