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 に答える