>  > BLITZ 【ブリッツ】 DAMPER ZZ-R 車高調LEXUS CT ZWA10 2ZR-FXE 11/01-

BLITZ 【ブリッツ】 DAMPER ZZ-R 車高調LEXUS CT ZWA10 2ZR-FXE 11/01-

APMLフィルター

DropDownList への SelectList の渡し方

by WebSurfer 2019年2月25日 14:37

ASP.NET MVC5 の Html ヘルパーの DropDownList および DropDownListFor に表示するデータを RA プレオ シートカバー【ダティ】プレオ RA1/RA2 シートカバー EURO-LUX アイボリー、アクションメソッドからビューにどのように渡すかということについて書きます。

上の画像は、先の記事「スキャフォールディング機能」で書いた通りにスキャフォールディング機能を使って自動生成させたコードで、その中の Edit 画面を表示したものです。

SupplierID と CategoryID が Html ヘルパーの DropDownList を使ってドロップダウン形式で表示されるようになっています。上の画像は CategoryID を展開したところで、CategoryName の一覧が表示されています。

スキャフォールディング機能で自動生成されたコードが基本になるでしょうから、それがどうなっているかを書きます。

まずアクションメソッド Edit で SelectList オブジェクトを生成し ViewBag に設定しています。以下のコードの通りです。

public ActionResult Edit(int? id)
{
 NORTHWINDEntities db = new NORTHWINDEntities();
 Products products = db.Products.Find(id);
 ViewBag.CategoryID = 
 new SelectList(db.Categories, "CategoryID", 
 "CategoryName", products.CategoryID);
 ViewBag.SupplierID = 
 new SelectList(db.Suppliers, "SupplierID", 
 "CompanyName", products.SupplierID);
 return View(products);
}

コンストラクタに SelectList(IEnumerable, String, String, Object) を使って、第 4 引数に selectedValue を設定しているところに注目してください。これによりビューの DropDownList が html に変換された際、select 要素内の当該 option 要素に selected 属性が付与されます。

ビューの DropDownList のコードは以下のようになります。第 1 引数がアクションメソッドで設定した ViewBag のキー名 Carrozzeria カロッツェリア TVM-FW1030-B 10.2V型ワイドVGAフリップダウンモニター、第 2 引数が null になっているところに注目してください。

@Html.DropDownList("SupplierID", null, 
 htmlAttributes: new { @class = "form-control" })
@Html.DropDownList("CategoryID", null, 
 htmlAttributes: new { @class = "form-control" })

DropDownList の第 2 引数が null となっていますが、第 2 引数の設定に関わらず ViewData / ViewBag から型が IEnumerable<SelectListItem> でキー名が第 1 引数と同じものを探してきます。

(例えば、上記のアクションメソッドで ViewBag.SupplierID の設定を削除すると、ビューの DropDownList のコードで「キー 'SupplierID' を持つ ViewData 項目の型は 'System.Int32' ですが、'IEnumerable<SelectListItem>' でなければなりません」というエラーになります)

DropDownList の第 1 引数を元に ViewBag で渡されたデータ(アクションメソッドで設定された SelectList オブジェクト)を取得するので、上の画像の通りドロップダウン形式で表示できるようになります。さらに、SelectList コンストラクタの第 4 引数に設定した selectedValue によって当該 option 要素に selected 属性が設定された結果が表示されます。

なお、DropDownList の第 2 引数を (SelectList)ViewBag.Supplier としたりすると、SelectList のコンストラクタで第 4 引数に設定した selectedValue が無視されるので注意してください。理由は不明です。

ViewData / ViewBag に DropDownList の第 1 引数と同じキー名がない場合は、

BLITZ 【ブリッツ】 DAMPER ZZ-R 車高調LEXUS CT ZWA10 2ZR-FXE 11/01-

[ホイール1本(単品)] SSR / EXECUTOR EX05 (FLC) 19インチ×9.5J PCD:120 穴数:5 インセット:48, 【大阪 タイヤ交換やってます!】ミシュラン パイロット スーパー スポーツ295/30R19 (100Y) XL【ゼネラルモーターズ承認】, PITWORK ピットワーク 日産 フロント ブレーキパッド 【 車種 アトラス F23 / 型式 U-SM2F23 / 排気量 2300 / 仕様 標準、低平床、ダブルキャブ、低床、1t、1.5t、Sタイヤ / 年式 92.01~95.06 / 内径 60.6 】 ブレーキ パッド 交換 部品 メンテナンス パーツ ポイント消化, 【送料無料】トヨタ カローラアクシオ カローラアレックス カローラスパシオ用 55B24L 新品『ACデルコバッテリー』, DAD ギャルソン フロントテーブル スクエアタイプ クロコダイルパターン ローレルデザインロゴ ブラックオーク エスティマ A/MCR3*W タナベ/TANABE ローダウンスプリング SUSTEC DF210 品番:JB5DK ホンダ ライフ JB7 P07A 2003年09月~, KOMINE BK-070 GTX S-BOOTS GRANDE BLK 26.5 05-070/26.5【smtb-s】, USグリル Fits 2000-2004 Ford Focus With Fog Light Bumper Black Billet Grille Grill Insert フォギーライトバンパーで2000-2004 Ford Focusに合うブラックビレットグリルグリルインサート, DIXCEL/ディクセル ブレーキディスクローター FP リア左右セット AUDI S4 3.0 QUATTRO 年式:11/07~12/04 型式:8KCAKF 品番:FP135 4876S, プロジェクトμ タイプHC+ フロント左右セット ブレーキパッド アリスト UZS145 F123 プロジェクトミュー プロミュー プロμ TYPE HC+ ブレーキパット【店頭受取対応商品】 ブレンボ ブレーキパッド ブラック P79 017 マツダ スクラム DJ51T DK51T 91/9~95/5 MT フロント左右セット

BLITZ 【ブリッツ】 DAMPER ZZ-R 車高調LEXUS CT ZWA10 2ZR-FXE 11/01-:●シフトスポーツ●アトレー ワゴン S321G/S331G 慶番フロアマット MT用 リアシート一体タイプ チェックレッド 18インチ サマータイヤ セット【適応車種:アテンザスポーツ(GH系 18インチ装着車)】WEDS ライツレー DK ブラックメタリックポリッシュ 7.5Jx18ZIEX ZE914F 225/45R18

BLITZ 【ブリッツ】 DAMPER ZZ-R 車高調LEXUS CT ZWA10 2ZR-FXE 11/01-.ヘッドライト 2007-2008 Ram V6 Black DRL Ring Headlamp Tail Lights Trim LED Foglight 3rd Brake 2007-2008ラムV6ブラックDRLリングヘッドライトテールライトトリムLED Foglight 3rdブレーキ 【4909449277270】【送料無料】【NISSIN(ニッシン)】 クラッチマスターシリンダー横型 5/8インチ ブラック/ブラック 61755 【ビッグバイクにおすすめ】

リア ハブベアリング 左右(2個セット) WILLサイファ NCP70 ハブ WBH-102S 純正42450-52021 SPIDI スピーディー ライディングパンツ THUNDER SHORT パンツ Size:XL

CT ZZ-R ZWA10 2ZR-FXE 車高調LEXUS 【ブリッツ】 11/01- DAMPER ZZ-R BLITZ CT

、DropDownList の第 2 引数の設定が有効になるようです。例えば、アクションメソッドで ViewBag.SupplierID を ViewBag.Supplier に変更した場合、DropDownList("SupplierID", (SelectList)ViewBag.Supplier, ...) として selected の設定を含めて期待した結果が得られます。

ViewData / ViewBag を探す順序ですが アクレ ブレーキパッド リア ライトスポーツ 273 アスカ CJ1 CJ2 CJ3、検証してみると、まず最初に ViewData を 15インチ サマータイヤ セット【適応車種:プレオ(L275、285系)】WEDS レオニス MX BMCミラーカット 4.5Jx15ヨコハマ エコス ES31 165/55R15、それになければ ViewBag を探すという結果になりました。ViewData / ViewBag に同じキー名があると、ViewData のデータが使われます。その際 ライブスポーツ アルトワークス HA/HB 11/21 フロントバンパー 塗装済み、もし ViewData のデータが不正ですと(IEnumerable<SelectListItem> 型でないと)エラーになります。

以上は DropDownListFor を使っても同様です。第 1 引数は model => model.SupplierID のようになりますが 、プロパティ名 SupplierID から ViewData / ViewBag を探して設定してくれます。

Tags: , ,

MVC

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

{yahoojp}jpprem01-zenjp40-wl-zd-93006