ASP.NET MVC 路由@Html.添加参数时,操作链接无法正常工作



我不明白为什么如果我在我的@Html.ActionLink((上添加参数,根目录不会以正确的方式进行。

事实上,如果我使用这个

@Html.ActionLink("Torna alla lista", "Index", "VwOpenOrders")

程序植根于"/VwOpenOrders",这就是我的观点。

如果我像这样添加参数

@Html.ActionLink("Torna alla lista", "Index", "VwOpenOrders", new { SearchLV = TempData["SearchLV"]})

它继续根"/VwFases?Length=12",其中"VwFase"是我启动操作链接的页面的控制器。

请有人可以帮助我吗? 我做错了什么?

谢谢

您应该尝试使用的 ActionLink 重载如下:

public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
object routeValues,
object htmlAttributes
)

话虽如此,您应该按如下方式更改代码:

@Html.ActionLink("Torna alla lista"
, "Index"
, "VwOpenOrders"
, new { SearchLV = TempData["SearchLV"]}
, null)

有关ActionLink重载的详细列表,请查看此处。

你应该改用下面的

@Html.ActionLink("Torna alla lista", "Index", "VwOpenOrders", new { SearchLV = TempData["SearchLV"]},null)

通过添加附加参数"null"来获得方法的正确重载

您实际上是在重载中使用ActionLink

public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
object routeValues,
object htmlAttributes
)

第三个参数是routeValues,而不是controllerName,所以Length=12是提供给它的字符串长度VwOpenOrders。您应该做的是使用controller参数:

@Html.ActionLink("Torna alla lista", "Index", new { controller = "VwOpenOrders" }, new { SearchLV = TempData["SearchLV"]})

或者使用接受 5 个参数的重载:

@Html.ActionLink("Torna alla lista", "Index", "VwOpenOrders", new { SearchLV = TempData["SearchLV"]}, null)

最新更新