我在SO中已经看过这个问题几次了,但没有一个有任何可以接受的答案:
ASP.NET MVC @Url.Action includes current route data
ASP.NET MVC implicitly adds route values
基本上,我的Controller有一个名为Group的操作方法,它有一个重载,它不接收任何参数并显示元素列表,另一个重载接收id并显示该组的详细信息。
如果我这样做:
Url.Action("Group", "Groups");
从站点的主页(/),它返回一个url,如下所示:
"mysite.com/Groups/Group"
现在,如果站点的当前地址是/Groups/Group/1,并且我调用相同的方法,这就没问题了
Url.Action("Group", "Groups");
返回的url如下:
"mysite.com/Groups/Group/1"
它会在生成URL时自动添加当前页面的路由值。即使我以这种方式生成URL:
Url.Action("Group", "Groups", null);
因此,显式指定我不需要任何路由值,生成的URL是相同的。为了获得我想要的地址,我必须显式地将路由值设置为空字符串,如下所示:
Url.Action("Group", "Groups", new {id=""});
这将生成以下url:
"mysite.com/Groups/Group"
我的问题是,为什么会发生这种情况?如果我没有设置任何路由值,它就不应该将它们添加到生成的URL中。
https://stackoverflow.com/questions/7133223
复制相似问题