1. ホーム
  2. asp.net-mvc

[解決済み] DropDownListFor 値が選択されない場合

2023-05-11 06:14:27

質問

編集ページでDropDownListForヘルパーメソッドを使用していますが、指定した値を選択させることがうまくいきません。私は 同様の質問 をStackoverflowで見つけました。提案された回避策は、"ビューコードでSelectListを入力することでした"。問題は、私はすでにこれを試しましたが、まだ動作していないことです。

<%= Html.DropDownListFor(model => model.States, new SelectList(Model.States.OrderBy(s => s.StateAbbr), "StateAbbr", "StateName", Model.AddressStateAbbr), "-- Select State --")%>

ブレークポイントを設定し、model.AddressStateAbbrの存在(および有効性)を確認しました。ただ、何が足りないのかがよくわかりません。

どのように解決するのですか?

小一時間調べた結果、selectedが設定されない原因は DropDownListFor . 原因は、ViewBagの名前をモデルのプロパティと同じにしていることです。

public  class employee_insignia
{ 
   public int id{get;set;}
   public string name{get;set;}
   public int insignia{get;set;}//This property will store insignia id
}

// If your ViewBag's name same as your property name 
  ViewBag.Insignia = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);

表示

 @Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.Insignia, "Please select value")

選択項目はドロップダウンリストに設定されませんが、ViewBagの名前を別の名前に変更すると、選択項目が正しく表示されます。

ViewBag.InsigniaList = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);

表示

 @Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.InsigniaList , "Please select value")