我正在尝试使用ActionLink
在控制器之间导航。我会以一个例子来说明我的问题。
我在Hat控制器的Index视图中,我正在尝试使用下面的代码创建一个指向Product控件的Details操作的链接。
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }) %>
不是在Product Controller上创建一个指向Details的链接,而是在Hat控制器下生成一个指向Details操作的链接,并在其末尾附加一个Length参数:
Hat/Details/9?Length=7
由于此问题,我无法使用HTML.ActionLink
在控制器之间切换。如果你能指出我做错了什么,我将不胜感激。感谢
PS:我使用的是MVC附带的默认路由设置
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" } );
答案 0 :(得分:387)
你想要的是这个重载:
//linkText, actionName, controllerName, routeValues, htmlAttributes
<%=Html.ActionLink("Details", "Details",
"Product", new {id = item.ID}, null) %>
答案 1 :(得分:17)
使用该参数,您将触发错误的重载功能/方法。
对我有用的是什么:
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }, null) %>
它触发HtmlHelper.ActionLink(string linkText,string actionName,string controllerName,object routeValues,object htmlAttributes)
我正在使用MVC 4.
Cheerio!
答案 2 :(得分:10)
如果你抓住MVC Futures集合(我强烈推荐)你可以在创建ActionLink时使用泛型,并使用lambda来构建路径:
<%=Html.ActionLink<Product>(c => c.Action( o.Value ), "Details" ) %>
您可以在此处获得期货汇编:http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471
答案 3 :(得分:10)
为了清楚起见,我建议使用命名参数编写这些助手,如下所示:
@Html.ActionLink(
linkText: "Details",
actionName: "Details",
controllerName: "Product",
routeValues: new {
id = item.ID
},
htmlAttributes: null
)
答案 4 :(得分:7)
你错了ActionLink的重载。试试这个。
<%= Html.ActionLink("Details", "Details", "Product", new RouteValueDictionary(new { id=item.ID })) %>
答案 5 :(得分:6)
尝试它工作正常
<%:Html.ActionLink("Details","Details","Product", new {id=item.dateID },null)%>
答案 6 :(得分:3)
另一种解决方案是使用href
辅助对象设置<a>
标记的<a href="@Url.Action("Details", "Product",new { id=item.ID }) )">Details</a>
属性,如:
self.performSegueWithIdentifier("segue that goes back to login screen", sender: self)
PFUser.logOutInBackground()
答案 7 :(得分:2)
请注意,“详细信息”是“产品”文件夹下的“查看”页面。
ProductId是表的主键。这是Index.cshtml
中的行 @Html.ActionLink("Details", "Details","Products" , new { id=item.ProductId },null)
答案 8 :(得分:0)
这段代码在部分视图中对我有用:
<a href="/Content/Index?SubCategoryId=@item.Id">@item.Title</a>