MVC SelectList против MultiSelectList - PullRequest
       43

MVC SelectList против MultiSelectList

1 голос
/ 15 декабря 2010

В MVC SelectList наследуется от MultiSelectList.Я не могу сказать разницу между ними, хотя.Для обоих я должен сказать, чтобы он выбрал несколько элементов (я ожидал, что это делать не нужно, поскольку в названии есть «multi»).

Если вы замените «SelectList» на «MultiSelectList» вкод ниже, он сгенерирует тот же HTML:

<% 
var leftSelectList = new SelectList(Model.LeftSide,"Key","Value");
var attrs = new SortedDictionary<string, object> {{"class", "ui-widget"}};
MvcHtmlString disabledStyle = MvcHtmlString.Create(Html.Encode("'width:50px;'"));
attrs.Add("style", disabledStyle);
attrs.Add("multiple", "multiple");
attrs.Add("size", "5"); /*-- how many items to show--*/        
var leftItems =  Html.DropDownList("ddlLeftItems", leftSelectList, attrs); %>

<%= leftItems.ToHtmlString()%>

Сгенерированный HTML:

<select class="ui-widget" id="ddlLeftItems" multiple="multiple" name="ddlLeftItems" size="5" style="&amp;#39;width:50px;&amp;#39;">
  <option value="1">A</option>
  <option value="2">B</option>
  <option value="3">C</option>
  <option value="5">E</option>
  <option value="9">I</option>
</select>

Итак, какой из них использовать?Спасибо.

Ответы [ 2 ]

5 голосов
/ 15 декабря 2010

Объект SelectList не генерирует HTML. Он создает список предметов, которые затем могут быть использованы в другом месте. Вспомогательная функция DropDownList генерирует HTML-код, используемый на странице, поэтому вы видите точно такой же HTML.

Объект SelectList является производным от MultiSelectList, но предоставляет свойство для получения единственного выбранного значения (называемого SelectedValue). MultiSelectList просто имеет свойство SelectedValues, которое содержит все выбранные значения.

Так что, если вы делаете список с несколькими вариантами выбора, то не имеет значения, какой из них вы используете, но если вы делаете список с одним выбором, вы должны использовать SelectList, потому что это упрощает получение выбранное значение.

2 голосов
/ 15 декабря 2010

MultiSelectList используется с Html.ListBox и Html.ListBoxFor методами. Эти помощники генерируют это: HTML выбирает несколько атрибутов

...