我无法在模型中获取复杂类型的数组,以在控制器中的两个操作之间存储其值 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() }
}
)
- 1 回答
- 0 关注
- 177 浏览
添加回答
举报
0/150
提交
取消