1

在 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>

那么,我应该使用哪一个?谢谢你。

4

2 回答 2

5

SelectList 对象不生成 HTML。它创建一个项目列表,然后可以在其他地方使用。DropDownList 辅助函数是生成页面上使用的 HTML 的原因,这就是您看到完全相同的 HTML 的原因。

SelectList 对象派生自 MultiSelectList,但为您提供了一个属性来获取单个选定值(称为 SelectedValue)。MultiSelectList 只有一个名为 SelectedValues 的属性,它保存所有选定的值。

所以如果你在做一个多选列表,那么你使用哪一个并不重要,但是如果你在做一个单选列表,那么你应该使用 SelectList 因为它更容易获得选定的值。

于 2010-12-15T17:35:39.207 回答
2

MultiSelectList 与Html.ListBoxHtml.ListBoxFor方法一起使用。这些助手生成:HTML select multiple Attribute

于 2010-12-15T17:31:47.040 回答