C# 如何将模型从视图传递到局部视图?

C# 如何将模型从视图传递到局部视图?,c#,.net,asp.net,asp.net-mvc,C#,.net,Asp.net,Asp.net Mvc,我有一个视图不是强类型的。然而,在这个视图中,我有一个强类型的局部视图 如何将模型传递给此强类型视图 我试过类似的东西 public ActionResult Test() { MyData = new Data(); MyData.One = 1; return View("Test",MyData) } 在我看来 <% Html.RenderPartial("Part

我有一个视图不是强类型的。然而,在这个视图中,我有一个强类型的局部视图

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

我试过类似的东西

 public ActionResult Test()
        {
              MyData = new Data();
              MyData.One = 1;
              return View("Test",MyData)
        }
在我看来

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


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

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

public ActionResult Test()
        {
              ViewData["DataForPartial"] = new PartialDataObject();
              return View("Test")
        }
在视图中使用:

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


但是无论如何:没有理由不使用stronly类型的视图。

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

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



ViewData是一个很好的丢失类型的字典

关于包装器,你是对的,这是一个不错的解决方法问题不是因为视图是强类型视图是这样一个事实,如果在该视图中有多个部分视图,则无法使其成为强类型视图以适应所有这些情况,除非您制作某种包装器或我想使用ViewData。你是什么意思?如果您的部分视图是强类型视图上面第行的MyData类将毫无问题地呈现您的视图。如您所见,您通过ViewData将多个模型发送到视图中,因为它不是强类型的,然后为每个强类型的PartialView提取模型。我尝试了这个方法,但不适用于我,所以我尝试了@Html.Partial,发现它对我适用。我不知道为什么。
<% Html.RenderPartial("PartialView",ViewData["someData"]); %>