3

私が知る限り、ASP.NET MVC ビューで DropDownList を作成する方法は 3 つあります。

  1. HTML を手動でコーディングする
  2. <asp:DropDownList ID="someID" runat="server"></asp:DropDownList>
  3. <%= Html.DropDownList("someID") %>

#1は(一般的に)時間の無駄だということは誰もが同意できると思います.

#2では、「WebForms」の方法のように見えますが、ビューを作成している場合、その後に発生するインラインコードを介して作成したオブジェクトにアクセスできるという利点があります。例えば:

<asp:DropDownList ID="someID" runat="server"></asp:DropDownList>
<% 
   someID.SelectedIndex = 0;  
   string someString = someID.SelectedValue.ToString();
%>

これは#3では不可能のようです。

#3(HTMLヘルパーの方法)について私が発見した良い点は、文字列を渡すことで、名前とIDを文字列に設定し、文字列を使用してViewDataディクショナリを検索し、呼び出し元の Controller に追加された ViewData ディクショナリに追加された SelectList に基づく、DropDownList のそれぞれのタグ。

// controller code
ViewData["someID"] = new SelectList(someMethod().ToList());  

私の人生では、タグを自動生成する方法がある<asp:DropDownList>かどうか、または自分で手動で作成する必要があるかどうかはわかりません。

ASP.NET MVC で DropDownList を実装するための一般的な最善の方法は何ですか?

4

1 に答える 1

1
<%= Html.DropDownList("name", new SelectList(someEnumerable, "valueProperty", "textProperty")) %>

ここで、someEnumerableはviewModelのプロパティです。

例えば:

class Person
{
    int id;
    string name;
}

class myVM
{
    IEnumerable<Person> people;
}

<%= Html.DropDownList("name", new SelectList(Model.people, "id", "name")) %>

編集はコントローラーでSelectListを作成しないでください。これはビュー固有のコードであり、ビューに属します。ビューモデルでIEnumerableを送信するだけです。

于 2010-07-30T14:54:52.510 に答える