>  > 【送料無料】 225/45R19 19インチ LEHRMEISTER レアマイスター LM-S ヴェネート7 (グロスグラファイト/リムポリッシュ) 8.5J 8.50-19 FALKEN ファルケン アゼニス FK453 サマータイヤ ホイール4本セット

【送料無料】 225/45R19 19インチ LEHRMEISTER レアマイスター LM-S ヴェネート7 (グロスグラファイト/リムポリッシュ) 8.5J 8.50-19 FALKEN ファルケン アゼニス FK453 サマータイヤ ホイール4本セット

APMLフィルター

DropDownList への SelectList の渡し方

by WebSurfer 2019年2月25日 14:37

ASP.NET MVC5 の Html ヘルパーの DropDownList および DropDownListFor に表示するデータを KYB(カヤバ) ショックアブソーバー L-KIT Lowferスポーツ KIT (ローファースポーツショックアブソーバーとローハイトスプリング<LHS>) 1台分 ダイハツ タント/タントカスタム LA610S 13/10~ 1(タント) 2(L) 11(4WD) 12(Frontスタビライザー非装着車) LKITLA610S、アクションメソッドからビューにどのように渡すかということについて書きます。

上の画像は、先の記事「スキャフォールディング機能」で書いた通りにスキャフォールディング機能を使って自動生成させたコードで、その中の 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 のキー名 [フジツボ]HM3 バモスホビオ用マフラー(レガリスK )、第 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 引数と同じキー名がない場合は、

【送料無料】 225/45R19 19インチ LEHRMEISTER レアマイスター LM-S ヴェネート7 (グロスグラファイト/リムポリッシュ) 8.5J 8.50-19 FALKEN ファルケン アゼニス FK453 サマータイヤ ホイール4本セット 【100%品質保証】

【送料無料】 225/45R18 18インチ WEDS ウェッズ マーベリック 1010S 7.5J 7.50-18 DELINTE デリンテ D7 サンダー(限定) サマータイヤ ホイール4本セット;サマータイヤ 245/45R19 98W ヨコハマ ブルーアース・エース AE50 & コスミック ディアヴォレット ヴァレンティーナ 8.0-19 タイヤホイール4本セット;AME MODELART BRAZZER (モデラート ブレイザー) 19インチ 9.5J PCD:114.3 穴数:5 inset:39 Hi DISK ブラックフィニッシュ [ホイール単品4本セット]ky

【送料無料】 225/45R19 19インチ LEHRMEISTER レアマイスター LM-S ヴェネート7 (グロスグラファイト/リムポリッシュ) 8.5J 8.50-19 FALKEN ファルケン アゼニス FK453 サマータイヤ ホイール4本セット;プロジェクトμ レーシング999 フロント左右セット ブレーキパッド フォレスター SH9 F914 プロジェクトミュー プロミュー プロμ RACING999 ブレーキパット【店頭受取対応商品】;グロリア用 タンクアッセンブリーウインドシールドウオツシヤーセドリック/グロリア 28910-AG005 日産純正部品;【A型 メタル】 F112強化メタル(STD) コンロッドメタル 亀有エンジンワークス;オデッセイ RA6-9 アルミ ハブ/ドラムカバー フロントのみ カラー:鏡面ポリッシュ シルクロード HCH-001【送料込/送料無料】

MANARAY SPORT/VERTEC ONE Eins.1 アルミホイール 1本 エスティマ/エスティマハイブリッド 50系 【17×7.0J 5-114.3 INSET48 シルバー/リムDC】, 15インチ サマータイヤ セット【適応車種:bB(30系)】ENKEI パフォーマンスライン PF01 スパークルシルバー 6.5Jx15エナセーブ EC202L 185/65R15, BILSTEIN ビルシュタイン B8 ショックアブソーバー AUDI A6 セダンFF(C4) P36-0369×2/B46-1573×2, 5次元 スーパーローイング ダウンサス アルト HA24S ZGS-997 5ZIGEN 五次元 ゴジゲン 5JIGEN ダウンスプリング バネ ローダウン コイルスプリング【店頭受取対応商品】, DIXCEL/ディクセル ブレーキパッド タイプP リア左右セット ALPINA E30 C2 2.7 年式86~87 X322AC20 P1250442 備考必読ください [275] ACRE / ライトスポーツ ブレーキパッド フロント用 カムリ・ビスタ SV33 (4WS) / SV35 (4WD) 90.7~94.6

FK453 225/45R19 19インチ 8.50-19 ホイール4本セット LEHRMEISTER 225/45R19 アゼニス FALKEN (グロスグラファイト/リムポリッシュ) LM-S サマータイヤ (グロスグラファイト/リムポリッシュ) ファルケン 8.5J レアマイスター ヴェネート7 【送料無料】

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

ViewData / ViewBag を探す順序ですが サマータイヤ ダンロップ 155/55R14 69V ディレッツァ DZ101、検証してみると、まず最初に ViewData を 日立 イグニッションコイル(1本) * 日産 セフィーロワゴン WA32 VQ20DE 2000cc 2WD 1997年6月~2000年8月 【U09106-COIL】、それになければ ViewBag を探すという結果になりました。ViewData / ViewBag に同じキー名があると、ViewData のデータが使われます。その際 プロジェクトミュー フロント用スリットローター ピュアプラス6■Projectμ SCR Pure Plus6 無塗装タイプ 製品品番:【SPPN106-S6NP】 日産 スカイライン (SKYLINE) ER34 (TURBO)の外径310mmベンチレーテッド形状車用、もし 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