在ASP.NET MVC中,如何使用Html.Action()向Action传递参数?

58
我一直使用Html.Action("ActionName", "ControllerName")在不需要将视图放置于Views\Shared的情况下调用跨控制器的子操作。这对于显示会话或Cookie信息等内容非常有效。
除了访问Cookie之外,我想向Html.Action("ActionName", "ControllerName")传递其他参数,以便根据传递给原始视图的数据执行不同的代码。
我应该使用不同的方法来向不同控制器的子操作传递参数吗?如何实现这个?
2个回答

117
您可以像这样在RouteValues属性中指定其他数据。
Html.Action("ActionName","Controller", new { id = 1 })

2
哇,太棒了!我在智能感知中看到了RouteValues,但我没有使用那种格式。我尝试了Html.Action("Action", "Controller", model.Paramter)。我马上就要试试这个。 - quakkels
如何传递字符串,例如文本或自动填充下拉列表项的ID? - antman1p
1
@antman1p,这听起来像是一个新问题,而不是评论。在这里发布新问题的链接,我会尽可能地帮助你。有一件事,听起来你正在尝试的事情发生在客户端,因为它取决于与用户(浏览器)的交互,而这个特定的问题涉及如何获取包含在服务器端视图上呈现的参数的操作链接。 - Roberto Hernandez
http://stackoverflow.com/questions/28701611/how-do-i-pass-the-string-value-parameter-of-the-selected-list-item-from-an-auto - antman1p

1
为了补充这个问题,我正在使用ASP.Net MVC 5,我可以通过以下代码成功实现这个问题:
@Html.Action("foo",new {parameter1=1})

4
这是同一个方法的超载。在这个超载中,假设你正在调用用于呈现当前视图的相同控制器,并且动作是“foo”。还有其他几种值得一提的超载: https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html.childactionextensions.action(v=vs.118).aspx - Roberto Hernandez

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