2014-03-04 50 views
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> 

回答

0

我認爲你可以在這裏使用ViewBag.SomeProperty。您也可以嘗試使用MVC部分(儘管我不確定這些部分是否可用於MVC2)。

+0

ViewBag不會出現在帶有MVC2的Visual Studio 2010 Intellisense中。看起來像是添加了MVC3 ... – Zarepheth

+0

你說得對。爲什麼你不能將你的父母代碼移動給孩子? –

+0

對於這種特殊情況,我能夠通過確保傳遞給子項的列表僅包含非空項來解決此問題。 但是,對於未來的情況,是否有方法將信息從子視圖傳回MVC2的父級? – Zarepheth

相關問題