2011-12-21 31 views
0

我在我的模型中有一个IList。我将显示为单选按钮。 但是,当我提交表单的值不正确,所述模型状态是无效的,并且其中所选择的单选按钮的值应该是有“计数= 0”我是否正确地在MVC中实现单选按钮列表?

这在模型的选项:

[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

你可以发布你的get和post方法的动作签名吗? – 2011-12-21 17:15:01

回答

1

当你回来后,你的复杂对象的集合不会被重建。相反,只有一个字符串值与收音机的选定值一起传递。您的更新操作模型应只包含一个名称。

如下实施你的单选列表:

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

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

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

谢谢!知道我在做错事 – Beginner 2011-12-21 17:24:55

+0

很高兴我能帮忙:) – 2011-12-21 17:25:30