如何将模型从视图传递到局部视图?
问题描述:
我认为是而不是强类型。不过,我在这个视图中有一个强烈类型的局部视图。如何将模型从视图传递到局部视图?
我该如何将模型传递给这个强类型视图?
我想是这样
public ActionResult Test()
{
MyData = new Data();
MyData.One = 1;
return View("Test",MyData)
}
在我TestView
<% Html.RenderPartial("PartialView",Model); %>
这给我一个计算器例外。所以我不确定如何传递它。当然,如果可能的话,我不想让测试视图强类型化,因为如果我在该视图中需要10个强类型局部视图,我需要某种包装器。
答
您应扩展您的模型,以便它可以为视图提供所有必需的字段(称为ViewModel),或者您将它们与ViewData分开提供。
public ActionResult Test()
{
MyData = new Data();
MyData.One = 1;
ViewData["someData"]=MyData;
return View();
}
则:
<% Html.RenderPartial("PartialView",ViewData["someData"]); %>
ViewData的是一个很好的losely类型的字典
答
将部分所需的对象放入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
你是正确的包装,它不是一个坏的路要走 – hunter 2010-05-05 18:42:32