在MVC中,SelectList派生自MultiSelectList。我不能说出他们之间的区别。对于两者,我必须告诉它选择多个项目(我希望不必这样做,因为名称中有“multi”)。
如果在下面的代码中用“MultiSelectList”替换“SelectList”,它将生成相同的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="&#39;width:50px;&#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>
那么,我应该使用哪一个?谢谢。
答案 0 :(得分:5)
SelectList对象不生成HTML。它会创建一个项目列表,然后可以在其他地方使用。 DropDownList帮助函数是生成页面上使用的HTML的原因,这就是为什么你会看到完全相同的HTML。
SelectList对象派生自MultiSelectList,但为您提供了一个属性来获取单个选定值(称为SelectedValue)。 MultiSelectList只有一个名为SelectedValues的属性,它包含所有选定的值。
因此,如果您正在进行多选列表,那么您使用哪一个并不重要,但如果您正在执行单选列表,那么您应该使用SelectList,因为它可以更容易地获取选定的价值。
答案 1 :(得分:2)
MultiSelectList与Html.ListBox
和Html.ListBoxFor
方法一起使用。这些助手会生成:HTML select multiple Attribute