我的主屏幕的视图模型为DashboardViewModel
。它具有带有自己的ViewModel的PartialViews,例如CustomerSearchViewModel
和SelectProductViewModel
。
所有三个ViewModel都是独立的。
当我运行应用程序时,我收到此错误:
传递到字典中的模型项是类型的 'Invoice.Web.ViewModels.DashboardViewModel',但是这本字典 需要类型的模型项 'Invoice.Web.ViewModels.SearchCustomerWindowVM'。
我想知道如何解决这个问题。
按照计划,主屏幕最终会将很多PartialViews与他们自己的视图模型集成在一起。我是否在DashboardViewModel
内声明了部分视图模型?或者我只是为所有partialViews提供一个大的DashboardViewModel
?
答案 0 :(得分:1)
您可以将部分视图视图模型作为主视图模型的属性,并调用Html.Partial
并传递这些属性。
public class DashBoardVM
{
public string Name { set;get;}
public CustomerSearchVM CustomerSearch { set; get;}
public DashBoardVM()
{
CustomerSearch =new CustomerSerachVM();
}
}
在信息中心视图中
@model DashBoardVM
<h2>@Model.Name</h2>
@Html.Partial("CustomerSearch",Model.CustomerSearch)
假设CustomerSearch部分视图是强类型o CustomerSearchVM
class。
答案 1 :(得分:1)
另一种选择是使用Html.Action()或Html.RenderAction()。这允许您从父视图调用完全独立的控制器,并返回完全不同的非关联模型。这是关于渲染部分视图和动作的非常好的解释。 http://www.midnight-coding.com/2013/01/partial-vs-action-vs-renderpartial-vs-renderaction.html