[英]Passing data from Html.Action to the partial view
我仍然是MVC 3的新手。我需要将我的@ Html.Action方法中的数据通过控制器传递到局部视图。
所以这是我的流程。
我会像这样调用@ Html.Action:
@Html.Action("SidebarMain", "Home", new List<int>(new int[] {1, 2, 3}))
然后它会击中我的控制器。 这是我的Home Controller中的方法:
public ActionResult SidebarMain(List<int> items)
{
return View(items);
}
然后我的部分视图应该能够像这样访问数据:
@model List<int>
@{
ViewBag.Title = "SidebarMain";
Layout = null;
}
<div>
@foreach (int item in Model)
{
<div>@item</div>
}
</div>
但是:我正在为模型获得一个null异常,这意味着它没有通过。
试试这个:
Html.Action("SidebarMain", "Home", new { items = new List<int>(new int[] {1, 2, 3}) })
并在SidebarMain Action中设置断点,以查看是否有items
简而言之:您的代码缺少Html.Action()
的items参数名称。 除此之外,代码应该是功能性的。
Html.Action("SidebarMain", "Home", new {items = new List<int>(new int[] {1, 2, 3}) })
作为建议的做法,我会在我的视图中使用专用的ViewModel
而不是仅发送整数数组。 因为,以这种方式干净的ViewModel
(您在视图中显示的属性容器),您的代码可能会在以后添加其他属性,因为我们的代码总是在不断发展。
参考ViewModel概念的用法: 练习5:创建视图模型
DarthVader的答案很好。 你是以Ajax的形式回归吗? 如果要将其嵌入主视图中,则应该将其作为PartialView返回
return PartialView("SidebarMain", model);
这是SidebarMain是您要返回的局部视图的名称。 尝试将此与DarthVader建议结合使用,并确保您将模型传递回视图。
发布后,我意识到你正在使用Html.Action。 如果这是一个真正的侧边栏,它应该作为局部视图加载ajax,你应该调用
Ajax.ActionLink("SidebarMain", "Home", new { items = new List<int>(new int[] {1, 2, 3}) })
这将允许您保持当前页面。 如果你不是在寻找ajax功能,我为兔子道路道歉:)
DarthVader的建议可能有效。 这就是我最终做的事情:
1)拆下控制器
2)这样称呼它:
@{Html.RenderPartial("SidebarMain", new int[] {1,3,4,2});}
3)这是我的查看代码:
@model int[]
@foreach( int item in Model){
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.