1
使用.Net MVC2,我想将信息从子视图传递到其父视图。最初,我认为我可以使用ViewData
集合,但这似乎只能在一个方向上工作:从父母到孩子。如何在MVC2中将数据从子视图传递给父视图?
下面是我试图将数据从子视图传递回父视图的一个简化版本。在运行Visual Studio调试器时,我会在浏览父视图和子视图时看到ViewData字典。但是应该在子视图中向词典添加项目的声明似乎不起作用。返回到父视图后,ViewData字典与调用子视图之前显示的相同。
在父视图:
<div>
<%
List<People> ManagerList = ViewData["ManagerList"];
ViewData["Section"] = "Managers";
Html.RenderPartial("OrgTable", ManagerList);
bool didTableRenderAnyRecords = ViewData["TableResult"];
%>
</div>
...
<div>
<%
if (!didTableRenderAnyRecords) {
%>
<p>Sorry, no records found</p>
<%
}
%>
</div>
在子视图
<table>
<thead> ... </thead>
<tbody>
<%
bool validRecordDisplayed = false;
foreach(var manager in Model) {
if (manager != null) {
validRecordDisplayed = true;
%>
<tr> ... </tr>
<%
}
}
ViewData["TableResult"] = validRecordDisplayed;
%>
</tbody>
</table>
ViewBag不会出现在带有MVC2的Visual Studio 2010 Intellisense中。看起来像是添加了MVC3 ... – Zarepheth
你说得对。为什么你不能将你的父母代码移动给孩子? –
对于这种特殊情况,我能够通过确保传递给子项的列表仅包含非空项来解决此问题。 但是,对于未来的情况,是否有方法将信息从子视图传回MVC2的父级? –
Zarepheth