我的模型中有一个IList。我正在显示为单选按钮。 但是,当我提交表单时,该值不正确且模型状态无效,并且所选单选按钮的值应为“Count = 0”
这是模型中的选项:
[Display(Name = "My enquiry is regarding: *")]
public IList<Industry> A1_EnquiryRegarding { get; set; }
控制器: 填充列表:
Industry blank = new Industry();
blank.Id = 0;
blank.Name = "Other";
IList<Industry> industryList = manager.GetIndustries();
industryList.Insert(industryList.Count, blank);
EnquiryModel.A1_EnquiryRegarding = industryList;
HTML:
<td>
<div class="editor-label">
<b> @Html.LabelFor(m => m.A1_EnquiryRegarding)</b>
</div>
<div class="editor-field">
@foreach (var radiobutton in Model.A1_EnquiryRegarding) {
@Html.RadioButtonFor(m => m.A1_EnquiryRegarding, radiobutton.Name)
<label>@radiobutton.Name</label>
<br></br>
}
@Html.ValidationMessageFor(m => m.A1_EnquiryRegarding)
</div>
</td>
我在哪里错了?为什么我没有得到正确的选定值?
编辑:
[HttpPost]
public ActionResult EnquiryForm(Enquiry Enquiry)
{
答案 0 :(得分:1)
回发后,不会重新创建复杂对象的集合。相反,只有一个字符串值与所选的无线电值一起传递。您的更新操作模型应该只包含一个名称。
按如下方式实施您的放射学家:
@foreach (var radiobutton in Model.A1_EnquiryRegarding) {
@Html.RadioButton("selectedIndustry", radioButton.Name);
}
所有单选按钮应具有相同的名称,但值不同。这样,当您调用Post动作时,您只需搜索参数“selectedIndustry”。
[HttpPost]
public ActionResult MyPostAction(string selectedIndustry) {
}