Правильно ли я реализую список переключателей в MVC? - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть 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>

где я ошибаюсь? почему я не получаю правильное выбранное значение обратно?

Edit:

 [HttpPost]
        public ActionResult EnquiryForm(Enquiry Enquiry)
        {

1 Ответ

1 голос
/ 21 декабря 2011

Когда вы отправляете обратно, ваша коллекция сложных объектов не воссоздается.Вместо этого передается только одно строковое значение с выбранным значением радио.Ваша модель для действия обновления должна включать только одно имя.

Реализуйте свой список рассылки следующим образом:

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

Все ваши переключатели должны иметь одинаковое имя, но разные значения.Таким образом, когда вы вызываете действие Post, вы просто ищете параметр selectedIndustry.

[HttpPost]
public ActionResult MyPostAction(string selectedIndustry) {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...