Как определить, установлен ли флажок с помощью MVC3 Razor

Поскольку я новичок в среде MVC, я потратил пару часов на создание списка флажков в файле просмотра. Наконец-то я смог хорошо разобраться. Вот мой код:

 @foreach (var item in Model.GetRoleNames)
        {
            @Html.CheckBox("chk_" + item.Value, new { value = item.Value })@item.Text<br />
        }

Но мне нужно определить, какой из них выбран, и если все галочки не отмечены, то это предотвратит некоторые операции.

Вопрос. Как я могу получить отмеченные элементы, когда я нахожусь в действии контроллера?


person Ali    schedule 07.06.2013    source источник
comment
Поддерживается ли флажок свойством или полем типа bool?   -  person rae1    schedule 07.06.2013
comment
Во-первых, спасибо за издание. На самом деле «GetRoleNames» — это свойство в связанной ViewModel, которое возвращает «SelectList».   -  person Ali    schedule 07.06.2013
comment
Вы захотите использовать логическое значение для фактического флажка. Там должно быть много информации, если вы будете искать привязку списка bool или других пользовательских объектов обратно к контроллеру. SelectList не является флажком или списком из них.   -  person merekel    schedule 07.06.2013
comment
@merekel: ценю это   -  person Ali    schedule 07.06.2013
comment
Возможно, этот ответ поможет stackoverflow.com/questions/5181948/   -  person Tom Stickel    schedule 08.06.2013


Ответы (1)


Как говорили другие, вы должны использовать логическое значение в качестве второго параметра CheckBox, чтобы указать проверенный статус. Небольшие манипуляции со строками помогут вам получить идентификаторы флажков selected.

Сначала давайте изменим способ использования помощника флажка.

<div id='myCheckboxDiv'>
 @foreach (var item in Model.GetRoleNames)
 {
   @Html.CheckBox("chk_" + item.Value, false)@item.Text<br />
 }
</div>

Как видите, я установил для второго параметра значение false и обернул микс в div.

И когда вы хотите получить «значения», связанные с выбранными флажками

var values = $(‘# myCheckboxDiv’).find('input:checkbox:checked').map(function () {

  // get the name ..
  var nameOfSelectedItem = this.attr('name');

  // skip the ‘chk_’ part and give me the rest
  return nameOfSelectedItem.substr(4);

}).get();

Я предполагаю, что item.Value является числом. Если это не так, удалите пробелы с помощью С#.

person Chintana Meegamarachchi    schedule 14.06.2013