我刚接触MVC2 asp.net项目。
我想知道,是否有可能有这样的行动链接:
<%: Html.ActionLink("[Add To Cart]", "../StoreCart/AddToCart", new { id = Model.id })%>
请注意../StoreCart
。
这是一个返回的URL示例(当我看到ActionLink时,我目前在StoreScreen中,但我想退出,“一级”,可以这么说):
差(404):http://localhost:8231/StoreScreen/StoreCart/AddToCart?id=9
所需:http://localhost:8231/StoreCart/AddToCart?id=9
谢谢!
PS:为什么你不能只做一个类似PHP的东西并写一个自定义<a href="<%: index + "/StoreCart/AddToCart?id=" + id %>" > add to cart </a>
:)
答案 0 :(得分:6)
ActionLink
并非旨在指向物理URL,而是指向控制器中的操作。
<%: Html.ActionLink("[Add To Cart]", "AddToCart", "StoreCart", new { id = Model.id }, null)%>
注意:最终null
是必需的,因为ActionLink
的覆盖需要它。它是模型,可以是对象或null。
答案 1 :(得分:4)
您不应将../StoreCart/AddToCart
作为参数传递给ActionLink
。 ActionLink
的第二个参数是操作名称,我非常怀疑您的操作被称为../StoreCart/AddToCart
。
所以你想要的是(它将使用与当前请求URL相同的控制器):
<%: Html.ActionLink("[Add To Cart]", "AddToCart", new { id = Model.id }) %>
如果您想设置特定的控制器,只需使用proper overload:
<%: Html.ActionLink(
"[Add To Cart]",
"AddToCart",
"StoreCart",
new { id = Model.id },
null
) %>
这是all available overloads的列表,我建议你退房。