ASP.NET:ActionLink返回相对url

时间:2011-05-21 22:27:57

标签: asp.net-mvc-2 c#-4.0

我刚接触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>:)

2 个答案:

答案 0 :(得分:6)

ActionLink并非旨在指向物理URL,而是指向控制器中的操作。

<%: Html.ActionLink("[Add To Cart]", "AddToCart", "StoreCart", new { id = Model.id }, null)%>

注意:最终null是必需的,因为ActionLink的覆盖需要它。它是模型,可以是对象或null。

Docs

答案 1 :(得分:4)

您不应将../StoreCart/AddToCart作为参数传递给ActionLinkActionLink的第二个参数是操作名称,我非常怀疑您的操作被称为../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的列表,我建议你退房。