Ограничить выбор одним выбором из ListBoxFor- MVC 2

#asp.net-mvc-2 #listbox

#asp.net-mvc-2 #listbox

Вопрос:

Я использую следующий код для генерации окна списка..

     <%: Html.ListBoxFor(m => m.Subscribers, new List<SelectListItem>(), new { @class = "list_style_Wizard" })%>
  

Но мы можем выбрать более одного элемента из listbox .. Как я могу ограничить его одним выбором???

Ответ №1:

Помощники HTML DropDownListFor и ListBoxFor , похоже, добавляют multiple атрибут при рендеринге в виде listbox. Я использую комбинацию DropDownListFor / ListBoxFor и селектора jQuery livequery, чтобы удалить multiple атрибут. При использовании Razor:

 @Html.DropDownListFor(m => m.SelectedId, Model.SelectList, 
    new { size = 10, @class = "selectOneListBox" })
  

и в JavaScript:

 $(".selectOneListBox").livequery(function () {
    $(this).removeAttr('multiple');
});
  

Я уверен, что вы также могли бы написать свою собственную версию вспомогательной процедуры HTML, которая не выдает multiple атрибут.

Комментарии:

1. Livequery больше не рекомендуется использовать. Поэтому, вероятно, лучше удалить атрибут сразу после загрузки страницы: $(document). готово(функция() { $(«.selectOneListBox»).removeAttr(‘множественный’); });

2. Хороший вызов для просмотра. Мне нравится livequery, он упрощает кодирование на ненавязчивом JavaScript, особенно для динамически создаваемого контента. Однако это влияет на производительность. Ваше предложение будет работать лучше и может быть наилучшим для этого сценария.

3. Достаточно только атрибута size, нет необходимости в коде jquery.

Ответ №2:

Html.ListBoxFor используется для отображения списка с несколькими вариантами выбора. Для использования с одним выбором Html.DropDownListFor

 <%: Html.DropDownListFor(m => m.Subscribers, listOfsubscribers, new { @class = "list_style_Wizard" }) %>
  

Комментарии:

1. Часто один select listbox является лучшим выбором, чем выпадающий список. Очень жаль, что Microsoft решила не делать это необязательным.