编辑器模板/不使用视图数据的编辑器模板中的部分视图

时间:2019-05-15 18:23:02

标签: c# asp.net-mvc-4

我有一个页面,您可以在其中输入最多两个联系人信息条目。输入的两个部分都是相同的,因此自然而然地我想使用编辑器模板来简化使用。

但是,联系信息包含一个动态部分。本节中显示的内容取决于联系信息中的输入。我正在使用局部视图来帮助动态显示此部分。

问题是,每当调用此局部视图时,我都会尝试传入页面的模型以确定正确的显示,但是当我单步执行代码时,所传递的模型为空。

是否有办法确保将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模型数据,因为我可以完整地浏览到下一页。

0 个答案:

没有答案