1

我看到了 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 }
        );

为什么这个行为会这样?

4

1 回答 1

2

MVC 会在当前页面的查询字符串中提取参数,并在渲染指向同一路由的链接时包含它们,基本上保留现有参数。

如果这是您遇到的情况 - 这是设计使然。这意味着,对于操作链接指向页面本身的情况,参数已经为您准备好了。例如,如果您有“升序/降序”链接,则其他参数(例如价格/描述)将继续包含在链接中,而您不必每次都对其进行编码。

如果您不想要其他参数,请使用空字符串指定参数,如下所示

<a href="@Url.Action("Index", "Soru", new { id = "" })">@baslik</a>

请注意,您不能分配null给参数,因为它是匿名类型。空字符串工作得很好。

顺便说一句,我相信你知道这一点,但你也可以使用更方便的方法@Html.ActionLink

@Html.ActionLink(baslik, "Index", "Soru", new { id = "" })">

希望这对您有所帮助。

于 2013-11-04T22:17:22.653 回答