kai*_*lya 220 asp.net-mvc
我正试图在控制器之间导航ActionLink
.我将以一个例子告诉我的问题.
我在Hat控制器的索引视图上,我正在尝试使用下面的代码创建一个指向Product控件的Details操作的链接.
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }) %>
Run Code Online (Sandbox Code Playgroud)
这不会创建指向Product控件上的Details的链接,而是在Hat控制器下生成一个指向Details操作的链接,并将Length参数附加到它的末尾:
Hat/Details/9?Length=7
Run Code Online (Sandbox Code Playgroud)
HTML.ActionLink
由于这个问题,我无法在控制器之间切换.如果你能指出我做错了什么,我将不胜感激.谢谢
PS:我使用的是MVC附带的默认路由设置
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" } );
Run Code Online (Sandbox Code Playgroud)
Çağ*_*kin 397
你想要的是这个重载:
//linkText, actionName, controllerName, routeValues, htmlAttributes
<%=Html.ActionLink("Details", "Details",
"Product", new {id = item.ID}, null) %>
Run Code Online (Sandbox Code Playgroud)
Ste*_*ter 17
使用该参数,您将触发错误的重载功能/方法.
什么对我有用:
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }, null) %>
Run Code Online (Sandbox Code Playgroud)
它触发HtmlHelper.ActionLink(string linkText,string actionName,string controllerName,object routeValues,object htmlAttributes)
我正在使用MVC 4.
Cheerio!
Jam*_*ery 10
如果您获取MVC Futures程序集(我强烈推荐),您可以在创建ActionLink时使用泛型,并使用lambda来构造路径:
<%=Html.ActionLink<Product>(c => c.Action( o.Value ), "Details" ) %>
Run Code Online (Sandbox Code Playgroud)
你可以在这里获得期货装配:http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId = 24471
Psi*_*-Ed 10
为了清楚起见,我建议使用命名参数编写这些助手,如下所示:
@Html.ActionLink(
linkText: "Details",
actionName: "Details",
controllerName: "Product",
routeValues: new {
id = item.ID
},
htmlAttributes: null
)
Run Code Online (Sandbox Code Playgroud)
你错了ActionLink的重载.试试这个.
<%= Html.ActionLink("Details", "Details", "Product", new RouteValueDictionary(new { id=item.ID })) %>
Run Code Online (Sandbox Code Playgroud)
试试它工作正常
<%:Html.ActionLink("Details","Details","Product", new {id=item.dateID },null)%>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
211351 次 |
最近记录: |