我有一个视图的视图模型,它在同一页面上显示多个表单。此视图模型包含将要呈现的每个表单的“子视图模型”。每个表单都有自己的PartialView。
所有这些表单共享一组属性(联系信息),但每个表单都有一组不同的附加属性。所以我认为这些表单类中的每一个都从基类继承是有意义的。但是,当我尝试访问该URL时,出现以下错误。
传递到字典中的模型项是类型的 'MyProject.ViewModels.JobForm',但是这本字典 需要类型的模型项 'MyProject.ViewModels.NightShiftForm'。
主视图
<%@ Control Language="C#"
Inherits="ViewUserControl<MyProject.ViewModels.JobsViewModel>" %>
<%: Html.Partial("_NightShiftForm", Model.NightShiftForm) %>
<%: Html.Partial("_DayShiftForm", Model.DayShiftForm) %>
'_NightShiftForm'的部分视图
<%@ Control Language="C#"
Inherits="ViewUserControl<MyProject.ViewModels.NightShiftForm>" %>
查看型号&amp;表格类
public class JobsViewModel {
public NightShiftForm NightShiftForm { get; set; }
public DayShiftForm DayShiftForm { get; set; }
}
public class JobForm {
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class DayShiftForm : JobForm {
public string PreferredCoffeeBrand { get; set; }
public bool IsMorningPerson { get; set; }
}
public class NightShiftForm : JobForm {
public string PreferredLocation { get; set; }
public string PreferredNights { get; set; }
}
有谁知道为什么会这样?
答案 0 :(得分:3)
事实证明,当您将空值作为模型参数传递给Html.RenderPartial
时,MVC很难。我的修复如下所示:
public class JobsViewModel {
public NightShiftForm NightShiftForm { get; set; }
public DayShiftForm DayShiftForm { get; set; }
public JobsViewModel() {
NightShiftForm = new NightShiftForm();
DayShiftForm = new DayShiftForm();
}
}