在ASP.Net Core中,Html.ActionLink有一个问题,即它不会将当前的路由参数传递给生成的URL。这意味着如果你有一个控制器和动作方法,需要某个参数来生成正确的URL,那么这个参数就不会被自动添加。
例如,假设有以下代码:
@Html.ActionLink("Details", "Edit", "Invoice", new { id = 123 }, null)
如果当前网址为/example/Index/abc,则该代码将生成如下链接:
/Invoice/Edit
而不是期望的:
/Invoice/Edit/123
要解决这个问题,需要在调用Html.ActionLink
时手动添加路由值:
@Html.ActionLink("Details", "Edit", "Invoice", new { id = 123, area = "", controller = "Invoice", action = "Edit" }, null)
这样做的好处是,如果当前的控制器、动作或区域已更改,那么路由也会自动更新,以确保生成的URL正确。
另一种解决方案是使用Url.Action
方法:
Details
这种方法会自动将当前路由参数添加到生成的URL中。