【发布时间】:2013-11-03 20:31:25
【问题描述】:
我看到了 asp .net "Url.Action" 的一个有趣行为。
<a href="@Url.Action("Index", "Soru")" >@baslik</a> 之类的链接在客户端浏览器中显示为<a href="/Soru/Index">denemebaslik</a>,然后用户单击此链接并转到目标页面。
在此目标页面中,<a href="@Url.Action("Index", "Soru")" >@baslik</a> 之类的链接在客户端浏览器中显示为 <a href="/Soru/Index/29271654-e19a-4096-8795-3283d8a208ed">denemebaslik</a>
@Url.Action 在不同页面中的行为不同。我的路线配置是这样的
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{*id}",
defaults: new { controller = "Giris", action = "Index", id = UrlParameter.Optional }
);
为什么会这样?
【问题讨论】:
-
你确定你没有向方法调用传递任何额外的参数吗?页面上运行的任何 JS 可能会修改 href?
-
没有 js 动作来操作或传递额外的参数。我检查了萤火虫,链接看起来像这样。这种行为是在我更改路由配置后开始的。
-
MVC 会在当前页面的查询字符串中提取参数,并在渲染指向同一路由的链接时包含它们,基本保留现有参数。 guid (2927...) 是否出现在查询字符串中?如果是这样,MVC 会选择它。
-
@SimonGoldstone 是的,你是对的,guid 出现在查询字符串中。问题是为什么会这样,它的优点是什么,当不需要查询字符串时我该怎么办?