#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 решила не делать это необязательным.