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

问题描述:

我认为是而不是强类型。不过,我在这个视图中有一个强烈类型的局部视图。如何将模型从视图传递到局部视图?

我该如何将模型传递给这个强类型视图?

我想是这样

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

在我TestView

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

这给我一个计算器例外。所以我不确定如何传递它。当然,如果可能的话,我不想让测试视图强类型化,因为如果我在该视图中需要10个强类型局部视图,我需要某种包装器。

+0

你是正确的包装,它不是一个坏的路要走 – hunter 2010-05-05 18:42:32

您应扩展您的模型,以便它可以为视图提供所有必需的字段(称为ViewModel),或者您将它们与ViewData分开提供。

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

则:

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

ViewData的是一个很好的losely类型的字典

+0

然后,我将不得不将它投在partialview中吗? – chobo2 2010-05-06 04:10:40

+1

你是什么意思?如果你的部分视图是强类型的MyData类,上面的行将使你的视图没有问题。正如您所看到的,您通过ViewData将多个模型发送到您的视图中,因为它不是强类型的,那么您将为每个强类型的PartialView拉动模型。 – 2010-05-06 08:27:08

+0

我试过这个,但不适合我,所以我试过@ Html.Partial,发现它适用于我。我不知道为什么。 – lawphotog 2014-05-22 15:01:18

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

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

在视图中使用:

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

但不管怎么说:没有理由不拥有stronly类型视图。

+0

问题不在于它作为视图是一个强类型视图的事实是,如果在视图中有多个局部视图,则不能将其视为适用于所有这些情况的强类型视图,除非您制作某种包装或我想使用ViewData。 – chobo2 2010-05-06 04:12:08