如何将Model从视图传递到局部视图?

时间:2010-05-05 18:38:28

标签: c# .net asp.net asp.net-mvc

我有一个强类型的视图。但是我在这个视图中有一个强类型的局部视图。

如何将模型传递给此强类型视图?

我试过像

这样的东西
 public ActionResult Test()
        {
              MyData = new Data();
              MyData.One = 1;
              return View("Test",MyData)
        }

在我的TestView中

<% Html.RenderPartial("PartialView",Model); %>

这给了我一个stackoverflow异常。所以我不知道如何传递它。当然,如果可能的话,我不想让测试视图强烈输入,如果我在该视图中有10个强类型的局部视图,我需要像某种包装器那样。

2 个答案:

答案 0 :(得分:4)

您应该扩展模型,以便它可以为视图提供所有必需的字段(这称为ViewModel),或者单独使用ViewData提供它们。

 public ActionResult Test()
        {
              MyData = new Data();
              MyData.One = 1;
              ViewData["someData"]=MyData;
              return View();
        }

然后:

<% Html.RenderPartial("PartialView",ViewData["someData"]); %>

ViewData是一个很好的输入字典

答案 1 :(得分:0)

将partial所需的对象放入Viewdata,并在视图中使用ist作为partial的输入。

public ActionResult Test()
        {
              ViewData["DataForPartial"] = new PartialDataObject();
              return View("Test")
        }

在视图中使用:

<% Html.RenderPartial("PartialView",ViewData["DataForPartial"]); %>

但无论如何:没有理由没有一个强烈的类型视图。