为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
DIEA 2021-10-31 19:02:48
我无法在模型中获取复杂类型的数组,以在控制器中的两个操作之间存储其值 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>
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我认为问题在于部分视图没有正确地为其 HTML 输入元素的名称添加前缀,因此 ModelBinder 不知道如何将它们绑定回您的数组。尝试将正确的前缀显式传递给部分:


 @Html.Partial(

     "_KitTypeDispensing", 

     Model.KitTypeAssignment[i], 

     new ViewDataDictionary { TemplateInfo = new TemplateInfo { 

         HtmlFieldPrefix = Html.NameFor(m => m.KitTypeAssignment[i]).ToString() } 

     }

 )


查看完整回答
反对 回复 2021-10-31
  • 1 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信