【发布时间】:2019-01-29 15:12:46
【问题描述】:
我有一个视图模型,它有另一个子模型来渲染局部视图(如下)。
public class ExamResultsFormViewModel
{
public PreliminaryInformationViewModel PreliminaryInformation { get; set; }
public string MemberID { get; set; }
public string MemberName { get; set; }
public int PatientID { get; set; }
public string ConfirmationID { get; set; }
public bool IsEditable { get; set; }
#region Select Lists
public SelectList ProviderOptions { get; set; }
#endregion
}
public class PreliminaryInformationViewModel
{
public string ProviderName { get; set; }
public string ProviderID { get; set; }
public string ServiceLocation { get; set; }
}
此 PreliminaryInformationViewModel 视图模型也用作另一个视图模型中的子模型,因为此初步信息可以在不同的页面上更新。
因此,我将这些初步信息创建为单独的部分并包含在其他页面中。
@{Html.RenderPartial("_PreliminaryInformation", Model.PreliminaryInformation);}
内部部分
@model Web.Models.Preliminary.PreliminaryInformationViewModel
<div>
@Html.TextBoxFor(x => x.DateOfService })
</div>
但问题是在提交过程中这个初步模型总是空的,因为 HTML name 属性总是呈现为
但是当我将父模型传递给部分时,如下所示。
@model Web.Models.Exam.ExamResultsFormViewModel
<div>
@Html.TextBoxFor(x => x.PreliminaryInformation.DateOfService })
</div>
现在 HTML 元素生成为
<input type = 'text' name='PreliminaryInformation.DateOfService.DateOfService' id='PreliminaryInformation.DateOfService'>
并且它在提交期间正确绑定。
我了解 MVC 根据 name 属性值绑定元素值,但第二种实现需要我为每个页面创建多个部分,我不喜欢。
到目前为止,我找不到与第一个实现一起使用的解决方案,有没有办法在提交期间将初步信息模型值绑定到第一个实现。
【问题讨论】:
标签: asp.net-mvc-4