Asp.net mvc 2 MVC选择列表与多选择列表

Asp.net mvc 2 MVC选择列表与多选择列表,asp.net-mvc-2,selectlist,multi-select,mvchtmlstring,Asp.net Mvc 2,Selectlist,Multi Select,Mvchtmlstring,在MVC中,SelectList源于MultiSelectList。不过,我分不清它们之间的区别。对于这两种情况,我都必须告诉它选择多个项目(我希望不必这样做,因为名称中有“multi”) 如果在下面的代码中将“SelectList”替换为“MultiSelectList”,它将生成相同的HTML: <% var leftSelectList = new SelectList(Model.LeftSide,"Key","Value"); var attrs = new SortedDic

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

A.
B
C
E
我

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

多选列表与
Html.ListBox
Html.ListBoxFor
方法一起使用。这些帮助程序生成以下内容:

MultiSelectList与
Html.ListBox
Html.ListBoxFor
方法一起使用。这些帮助程序生成以下内容:

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

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


因此,如果您使用的是多选列表,那么使用哪一个并不重要,但是如果您使用的是单选列表,那么您应该使用SelectList,因为它更容易获取所选值。

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

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

因此,如果您使用的是多选列表,那么使用哪一个并不重要,但是如果您使用的是单选列表,那么您应该使用SelectList,因为它更容易获取所选值