gpt4 book ai didi

asp.net-mvc-4 - MVC4 - 提交期间的部分 View 模型绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 16:26:57 32 4
gpt4 key购买 nike

我有一个 View 模型,它有另一个子模型来渲染部分 View (如下)。

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 View 模型还用作另一个 View 模型中的子模型,因为此初步信息可以在不同页面上更新。

因此,我将这些初步信息创建为单独的部分并包含在其他页面中。

@{Html.RenderPartial("_PreliminaryInformation", Model.PreliminaryInformation);}

内部部分

@model Web.Models.Preliminary.PreliminaryInformationViewModel
<div>
@Html.TextBoxFor(x => x.DateOfService })
</div>

但问题是在提交过程中,这个初步模型始终为空,因为 HTML 名称属性始终呈现为

但是当我将父模型传递给部分模型时,如下所示。

@model Web.Models.Exam.ExamResultsFormViewModel
<div>
@Html.TextBoxFor(x => x.PreliminaryInformation.DateOfService })
</div>

现在 HTML 元素生成为

<input type = 'text' name='PreliminaryInformation.DateOfService.DateOfService' id='PreliminaryInformation.DateOfService'>

并且它在提交过程中正确绑定(bind)。

我理解 MVC 根据 name 属性值绑定(bind)元素值,但第二个实现需要我为每个页面创建多个部分,这是我不喜欢的。

到目前为止,我找不到与第一个实现一起使用的解决方案,有没有办法可以在使用第一个实现提交期间进行初步信息模型值绑定(bind)。

最佳答案

我知道有点晚了,但可能对某人有帮助

如果您有复杂的模型,您仍然可以使用以下方法将其传递到部分:

@Html.Partial("_YourPartialName", Model.Contact, new ViewDataDictionary()
{
TemplateInfo = new TemplateInfo()
{
HtmlFieldPrefix = "Contact"
}
})

我已经定义了带有属性“Contact”的模型。现在 HtmlFieldPrefix 所做的是为每个模型添加属性绑定(bind)“以便模型绑定(bind)器可以找到父模型”

有一篇关于它的博客文章:http://www.cpodesign.com/blog/bind-partial-view-model-binding-during-submit/

.NET Core 2 绑定(bind)

在 .NET Core 2 和 MVC 中,上述答案将不起作用,该属性不再可设置。

解决方案非常相似。

 @{ Html.ViewData.TemplateInfo.HtmlFieldPrefix = "Contact"; }
@await Html.PartialAsync("_YourPartialName", Model.Contact)

提交模型后,它将再次绑定(bind)。

希望有帮助

关于asp.net-mvc-4 - MVC4 - 提交期间的部分 View 模型绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693698/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com