我無法在模型中獲取復雜類型的數組,以在控制器中的兩個操作之間存儲其值 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 關注
- 200 瀏覽
添加回答
舉報
0/150
提交
取消