隐藏字段未将部分视图中的值存储到复杂对象数组中

我无法在模型中获取复杂类型的数组,以在控制器中的两个操作之间存储其值 IsAssigned。


一旦模型组成,其中包括复杂类型的数组(包括 IsAssigned),视图引擎开始呈现 HTML/Razor 脚本。在视图中,有一部分脚本处理操作复杂类型的控件的显示。它是一个循环遍历复杂类型数组的“For i”循环。


在此循环期间,对于包含在复杂类型数组内的属性 IsAssigned,有一个剃刀命令 HiddenFor。


在呈现局部视图的循环中执行第二步。在这个视图中,有两个单选按钮链接到数组位置的 IsAssigned 布尔值?财产。如果用户选择是,则该属性变为真,没有假。


在视图完全呈现并且用户做出选择之后,控制器中的下一个操作方法被激活并将模型传递给它。在这里,我希望用户对 IsAssigned 属性的选择会持续存在,但不会。它不是。


下面是循环的代码和局部视图的代码。


环形


    @for (int i = 0; i < Model.KitTypeAssignment.Length; i++)

{

    @Html.HiddenFor(m => m.KitTypeAssignment[i].IsKitTypeActiveForSubject)

    @Html.HiddenFor(m => m.KitTypeAssignment[i].KitType.Code)

    @Html.HiddenFor(m => m.KitTypeAssignment[i].KitType.Description)

    @Html.HiddenFor(m => m.KitTypeAssignment[i].KitType.KitTypeId)


    @Html.HiddenFor(m => m.KitTypeAssignment[i].IsAssigned, new { @Name = "IsAssigned" + Model.KitTypeAssignment[i].KitType.Code })


    @Html.Partial("_KitTypeDispensing", Model.KitTypeAssignment[i])

}

局部视图


    <div class="field inline spacer20">

@{


    var kitTypeAssign = String.Format("{0}{1}", Model.KitType.Code, "Assign");

    var identityOfAssigned = new { id = @kitTypeAssign, @Name = "IsAssigned" + Model.KitType.Code };


    var kitTypeNoAssign = String.Format("{0}{1}", Model.KitType.Code, "NoAssign");

    var identityOfNoAssigned = new { id = @kitTypeNoAssign, @Name = "IsAssigned" + Model.KitType.Code };


    var sectionTitle = string.Format("{0} {1}", PromptText.Assign_185B7133DB22230701A857C059360CC2.ToLocalizableString(), Model.KitType.Description);


    @Html.Label(sectionTitle, new { @class = "colon" })

    @Html.RadioButtonFor(m => m.IsAssigned, true, @identityOfAssigned)

    <label for=@kitTypeAssign>@Html.PromptFor(PromptText.Yes_93CBA07454F06A4A960172BBD6E2A435)</label>

    @Html.RadioButtonFor(m => m.IsAssigned, false, @identityOfNoAssigned)

    <label for=@kitTypeNoAssign>@Html.PromptFor(PromptText.No_BAFD7322C6E97D25B6299B5D6FE8920B)</label>

}

</div>


DIEA
浏览 180回答 1
1回答

青春有我

我认为问题在于部分视图没有正确地为其 HTML 输入元素的名称添加前缀,因此 ModelBinder 不知道如何将它们绑定回您的数组。尝试将正确的前缀显式传递给部分:&nbsp;@Html.Partial(&nbsp; &nbsp; &nbsp;"_KitTypeDispensing",&nbsp;&nbsp; &nbsp; &nbsp;Model.KitTypeAssignment[i],&nbsp;&nbsp; &nbsp; &nbsp;new ViewDataDictionary { TemplateInfo = new TemplateInfo {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HtmlFieldPrefix = Html.NameFor(m => m.KitTypeAssignment[i]).ToString() }&nbsp;&nbsp; &nbsp; &nbsp;}&nbsp;)
打开App,查看更多内容
随时随地看视频慕课网APP