>  > 17インチ サマータイヤ セット【適応車種:86(ZN6 ハイパーマンスパッケージ除く)】A-TECH シュナイダー DR01 ブラックポリッシュ+ダークブルークリア 7.0Jx17トランパス mpZ 215/45R17

17インチ サマータイヤ セット【適応車種:86(ZN6 ハイパーマンスパッケージ除く)】A-TECH シュナイダー DR01 ブラックポリッシュ+ダークブルークリア 7.0Jx17トランパス mpZ 215/45R17

【★送料無料】 プリウスアルファ ステアリング【レアル】PRIUSα ZVW40/41(2011年~)ガングリップ ステアリング プラチナブル-カ-ボン > Blog 1   |   カードでポイント最大34倍 3/21(木)20:00~3/26(火)1:59迄 ブリヂストン ブリザック VRX2 スタッドレス スタッドレスタイヤ ● 205/50R17 Japan三陽 ZACK Sport01 ホイールセット 4本 17インチ 17 X 7 +48 5穴 114.3
APMLフィルター
<< MVC5 のエラーメッセージ表示 | ASP.NET Web API のバインディング (2) >>

DropDownList への SelectList の渡し方

by WebSurfer 2019年2月25日 14:37

ASP.NET MVC5 の Html ヘルパーの DropDownList および DropDownListFor に表示するデータを、アクションメソッドからビューにどのように渡すかということについて書きます。

上の画像は、先の記事「スキャフォールディング機能」で書いた通りにスキャフォールディング機能を使って自動生成させたコードで、その中の 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 のキー名、第 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 引数と同じキー名がない場合は、DropDownList の第 2 引数の設定が有効になるようです。例えば 、

17インチ サマータイヤ セット【適応車種:86(ZN6 ハイパーマンスパッケージ除く)】A-TECH シュナイダー DR01 ブラックポリッシュ+ダークブルークリア 7.0Jx17トランパス mpZ 215/45R17を豊富に取り揃えております


【WeatherTech ( 443253 ) FloorLiner】


17インチ サマータイヤ セット【適応車種:86(ZN6 ハイパーマンスパッケージ除く)】A-TECH シュナイダー DR01 ブラックポリッシュ+ダークブルークリア 7.0Jx17トランパス mpZ 215/45R17 【メーカー在庫あり】 レイブリック RAYBRIG ヘッドライト バイク用 マルチリフレクター φ180 丸型 H4U 12V60/55W 1個入り クリア FB03 HD店

↓↓↓[ホイール1本(単品)] SSR / EXECUTOR EX05 (BD) 18インチ×8.5J PCD:100 穴数:5 インセット:10;[ホイール1本(単品)] SSR / EXECUTOR EX05 (BD) 18インチ×8.5J PCD:100 穴数:5 インセット:30;【送料無料】 175/65R15 15インチ KYOHO 共豊 クリエイティブディレクション S1 5.5J 5.50-15 PIRELLI ピレリ チンチュラートP6 サマータイヤ ホイール4本セット フジコーポレーション, [ACRE] アクレ ブレーキパッド PC3200 フロント用 コロナ / コロナプレミオ AT210 98/8~01/12 1600cc GT ※代引不可 ※北海道・沖縄・離島は送料2160円, 住友スリーエム製 アイアールカット フィルム G017-01M フロント メルセデス・ベンツ Sクラス クーペ W140 140070・140076 1991年08月~1998年11月, 【最低でも5倍】 ブレーキローター■アウディ AUDI A6 (4B/C5) セダン 2.8 クワトロ QUATTRO■代表型式 4BAPRF 年式 99/9~01/11■PR No. 1LT/1LF■DIXCEL ディクセル ブレーキローター 前後セット1台分 送料無料税込【smtb-F】, 【プロミュー】送料無料【project mu】トヨタ ランドクルーザー HC+ ブレーキパッド 前後セット UZJ100W (シグナス含む) ランドクルーザー (98/1~);ケイブレイク グロリア Y33 グランツーリスモ 前期 COMPLETE フロントグリル 塗装済み オデッセイ RA6/7/8/9 リアバンパー L.A.U BROSTAR/ブロスター↓↓↓【送料無料】 245/35R20 20インチ WORK ワーク シュヴァート レグニッツ 8J 8.00-20 ROADCLAW ロードクロウ RH660(限定) サマータイヤ ホイール4本セット フジコーポレーション, 【 マークII JZX110 / 1JZ-GTE 用 】 サムコ クーラントホースキット 商品コード: 40TCS274/C ( SAMCO COOLANT HOSE KIT ラジエターホース ), [ホイール1本(単品)] SSR / EXECUTOR EX04 (BD) 18インチ×8.0J PCD:112 穴数:5 インセット:1, 【送料無料】MID RMP-028F 18インチ 235/50R18 235/50-18 アルファード 30系 タイヤ付き ホイール 組込・バランス調整 4本セット, 【受注生産】【グレイス Grace】コルト (5人乗) 等にお勧め LSエディション [Bラインレザー仕様] シートカバー 1台分 型式等:Z21A / Z22A 品番:CS-MD040-A

【最低でも5倍】 ブレーキローター ■ランサーエボリューション■スリットローター フロント1台分DIXCEL ディクセル PDタイプ 6本スリット加工■型式 CZ4A ■ Evo. GSR■年式 07/10~ ■PD3416053S■送料無料税込【smtb-F】

↓↓↓↓↓↓


↓↓↓↓↓↓↓↓↓↓↓↓

カードでポイント最大34倍 3/21(木)20:00~3/26(火)1:59迄 ブリヂストン POTENZA ポテンザ S007A サマータイヤ ● 245/45R18 HotStuff Stich LEGZAS FORBES シュティッヒ レグザス フォーブス ホイールセット 4本 18インチ 18 X 8 +42 5穴 114.3, 送料無料(一部離島除く) RS-R アールエスアール Ti2000 ダウンサス トヨタ オーリス(2006~2012 150系 ZRE152H) フジコーポレーション, 【ワールドウイング / ライザー】NW-0023 ヴィッツ KSP/NCP/SCP13# 後期用 H22.12- LYZER LEDルームランプセット, OXバイザー フロントシェイダー ハーフミラー ホンダ オデッセイ RA3, 17インチ サマータイヤ セット【適応車種:アコードワゴン(CM系 16、17インチ装着車)】WEDS レオニス SK パールブラックミラーカット 7.0Jx17Bluearth エース AE50 215/45R17

【アルティナ Artina】【受注生産】 シフォン(4人乗り)にお勧め! LA600F / LA610F系 H28/12→MC迄 ロイヤルカスタム(ダイヤキルト系) シートカバー1台分 品番:8062;アドヴィックスブレーキパッド■ADVICS ストリートスペック フロント用 【品番:SS645-s】 トヨタ カムリ SXV20 99.08-01.09 ●アベスト●[NEXUS]ダウンサススプリング メルセデスベンツ W211系 -04Y Eクラス セダン 【オートウェア】 本革シートカバー レクサス IS250 にお勧め! 品番:1021;15インチ サマータイヤ セット【適応車種:バモス(HM1、2)】WEDS レオニス SK ブラックメタルコートミラーカット 4.5Jx15ヨコハマ Sdrive ES03 165/50R15

RS-R RS★R DOWN サスペンション フロント/リア トヨタ エクシブ ST202 FF NA 200GT 2000cc 1993年10月~1998年05月;LEONIS GREILA β/レオニス グライラベータ マツダ フレアワゴン MM53S アルミホイール 4本 【16×5.0J 4-100 INSET45 BMCMC】

、アクションメソッドで ViewBag.SupplierID を ViewBag.Supplier に変更した場合、DropDownList("SupplierID", (SelectList)ViewBag.Supplier, ...) として selected の設定を含めて期待した結果が得られます。

ViewData / ViewBag を探す順序ですが カードでポイント最大34倍 3/21(木)20:00~3/26(火)1:59迄 TOYOTIRES トーヨー プロクセス R1R PROXES サマータイヤ 215/45R17 HotStuff エクシーダー E04 4本 ホイールセット 17インチ 17 X 7 +38 5穴 114.3、検証してみると プレゼント実施中![品番MI16] [デミオ] [H14/8-H16/4] [DY#W / DY#R] [定員5] レガリア パンチングシートカバー シートカバー、まず最初に ViewData を、それになければ ViewBag を探すという結果になりました。ViewData / ViewBag に同じキー名があると 【ポイント5倍】 Hits technical works ムーブ カスタム LA100S 2WD ターボ車用 ネオヤンキーマフラー、ViewData のデータが使われます。その際 17インチノア60系 全グレードAXEL  アクセル フォー シルバー 7.0Jx17ヨコハマ エコス ES31 215/45R17 ●カーツ / KAAZ●マーク2 JZX101 BASIC LSD 品番:DAT3030、もし ViewData のデータが不正ですと(IEnumerable<SelectListItem> 型でないと)エラーになります。

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

44dc65e2-8c9f-45ab-aef4-65ebc88fadfa|0|.0

Tags: , ,

MVC

関連するブログ

DetailsView 中の連動 DropDownListGridView や DetailsView などのデータバインドコントロールを使ってレコードの更新や挿入を行う場合、データを DropDownList の一覧から選択してもらうことがあります。 ...GridView 上の DropDownList に ToolTip 注意: 以下の記事の例では、Products テーブルの CategoryID が NULL の場合、および更新の際に NULL を入力する場合の対応は考えていません。NULL 対応は別の記事 ...DropDownList を使って絞込みGridView に表示するレコードを DropDownList を使って絞り込むサンプルです。 以前、実験室 SelectCommand の切り替え にも、2 つの DropDownL...

About this blog

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

Search

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