我正确地在MVC中实现单选按钮列表吗?

时间:2011-12-21 17:06:27

标签: asp.net-mvc-3 razor radio-button

我的模型中有一个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)
        {

1 个答案:

答案 0 :(得分:1)

回发后,不会重新创建复杂对象的集合。相反,只有一个字符串值与所选的无线电值一起传递。您的更新操作模型应该只包含一个名称。

按如下方式实施您的放射学家:

@foreach (var radiobutton in Model.A1_EnquiryRegarding) {
    @Html.RadioButton("selectedIndustry", radioButton.Name);
}

所有单选按钮应具有相同的名称,但值不同。这样,当您调用Post动作时,您只需搜索参数“selectedIndustry”。

[HttpPost]
public ActionResult MyPostAction(string selectedIndustry) {
}