2014-03-04 62 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

相关问题