在ASP.NET MVC 3中的@Html.ActionLink

7
我的.cshtml文件中的操作链接如下:
@Html.ActionLink("Reply", "Post_Reply", new { item.ID, item.Post_ID, item.Reply_ID })

我的控制器中的方法如下:

[Authorize]    
public ActionResult Post_Reply(int PostId=0, int Id = 0, int ReplyId = 0)   
{   
    post posts = new post();    
    posts.ID = Id;    
    return View(posts);   
}

但只有item.ID的值被传递, 另外两个值item.Post_ID和item.Reply_ID没有被传递。 可以有人指导一下吗? 谢谢。


1
生成的URL是什么样子的? - J. Holmes
3个回答

7
看起来您正在使用错误的重载形式@Html.ActionLink:
请尝试:
@Html.ActionLink("Reply", "Post_Reply", new { Id = item.ID, PostId = item.Post_ID, ReplyId = item.Reply_ID }, null)

5
问题在于,当您向操作链接添加参数值时,必须同时添加HTML属性,可以使用以下方法:
@Html.ActionLink("Reply", "Post_Reply", new { Id = item.ID, PostId = item.Post_ID, ReplyId = item.Reply_ID }, null)

添加null值到HTML属性中将允许正确的参数被发送。


1

尝试一下

@Html.ActionLink("Reply", "Post_Reply", new { Id = item.ID, PostId = item.Post_ID, ReplyId = item.Reply_ID })

你的问题在于你传递的匿名对象没有包含变量名称,因此它无法映射到你的Action参数上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接