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