我有一个页面,您可以在其中输入最多两个联系人信息条目。输入的两个部分都是相同的,因此自然而然地我想使用编辑器模板来简化使用。
但是,联系信息包含一个动态部分。本节中显示的内容取决于联系信息中的输入。我正在使用局部视图来帮助动态显示此部分。
问题是,每当调用此局部视图时,我都会尝试传入页面的模型以确定正确的显示,但是当我单步执行代码时,所传递的模型为空。
是否有办法确保将View模型传递到编辑器模板中的部分视图?
我尝试将部分视图更改为编辑器模板,但这不起作用。
这是页面视图:
@Html.EditorFor(m => m.Contact1)
@Html.EditorFor(m => m.Contact2)
联系人的编辑器模板:
@Html.BsRequiredRadioButtonListFor(m => m.Role, AppLists.GetRoleList(), "Role",
includeDynamicBehavior: true, postAction: $"{Url.Action("RoleTextBox")}", container: "txtRoleBoxes")
@Html.BsRequiredTextBoxFor(m => m.Name)
<div id="txtRoleBoxes">
@Html.PartialFor(m => m, "Partial/RoleTextBox")
</div>
控制器调用部分视图:
public ActionResult RoleTextBox(ContactModel model)
{
ModelState.Clear();
return PartialView("Partial/RoleTextBox");
}
部分视图:
@if (Model.Role == eWaiver.Models.Roles.Officer.ToString() || Model.Role == eWaiver.Models.Roles.Other.ToString())
{
@Html.BsRequiredTextBoxFor(m => m.Title)
}
else if(Model.Role == eWaiver.Models.Roles.PaidPreparer.ToString())
{
@Html.BsRequiredTextBoxFor(m => m.EFIN, ContactInformation.EFINLabel, helpText: ContactInformation.EFINHelpText)
}
逐步浏览部分内容,我发现Model.Role是一个空字符串。它应该是在“联系信息”中进行的任何选择。出于某种原因,似乎部分视图未使用View数据。我知道我确实有View模型数据,因为我可以完整地浏览到下一页。