我有两个视图:一个是局部视图,另一个是使用@Html.RenderPartial("_PartialView")
封装局部视图的视图。每个都有自己的ViewModel:
public class PartialViewModel
{
// properties, etc.
}
public class MainViewModel
{
public PartialViewModel p { get; set; }
// properties, etc.
}
当我加载第二个视图(使用MainViewModel的那个)时,出现了字典错误,因为这个视图和它封装的部分视图使用了两个不同的ViewModels。我不能让它们使用相同的ViewModel,因为这个部分视图在许多其他不同的视图中被渲染。
更明确地说,这两个视图都包含表单,其中部分视图代表所有表单之间共享的字段。鉴于此,我有任何选择吗,还是我只是试图做一些不符合MVC设计约束的事情?
@Html.RenderPartial
的第二个参数。谢谢。 - alexRenderPartial
时没有指定模型,它将默认使用主视图的ViewDataDictionary
,因此会将MainViewModel
传递给局部视图。但由于局部视图期望的是PartialViewModel
,所以会出现错误。 - user3559349