2

そのため、私は MVC/Razor を学習中ですが、これがどのように機能しているのかわかりません。

Create メソッドで

ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name");

私はページにいます

@Html.DropDownList("GenreId", String.Empty);

そして、これは機能します。私が混乱するのは、ViewBag とオブジェクトのプロパティの違いです。

したがって、最初の行を次のように変更できます

ViewBag.x= new SelectList(db.Genres, "GenreId", "Name");

@Html.DropDownList("x", String.Empty);

しかし、もちろんそれはオブジェクトにバインドされません。では、リスト名をオブジェクト プロパティと同じ名前にしたくない場合に、フィールドのドロップダウン リストを設定する適切な方法は何ですか?

Request.Form オブジェクトから直接値を取得できると思いますが、そのようなものはモデル バインディングの要点全体を回避します。

4

2 に答える 2

5

ドロップダウン リスト ヘルパーは、渡された文字列を使用して選択リストを自動的に検索します。

  1. あなたのモデル
  2. ビューバッグ
  3. 温度データ

選択リストが作成された場合、ヘルパーは、渡された文字列と同じ名前の name および id 属性を持つドロップダウン リストをレンダリングします。

このプロセスでは、ヘルパーは ID と名前が渡された文字列と同じであると想定します。どのような文字列を渡しても、レンダリングされたドロップダウン リストの name 属性と id 属性が設定されます。

使用する場合

@Html.DropDownList("x", String.Empty);

結果のドロップダウン リストには、name="x" と id="x" が含まれます。投稿先のアクション メソッドは、「x」というパラメーターを受け取ります。

一方、バインドされたパラメーターの名前と selectlist を区別したい場合は、DropDownList のオーバーロードを使用できます。

Html.DropDownList("Genres", (IEnumerable<SelectListItem>) ViewBag.GenresList)
于 2013-03-30T01:58:43.090 に答える