私はコントローラに次のコードを持っています:
ViewBag.CategoryName = new SelectList(catList, "key", "value");
ここで、catListはDictionaryであり、keyはstring型で、valueはstring型です。この辞書には適切な値が設定されており、実際の値(確認済みおよびテスト済)が含まれています。
私の見解では、私は次のコード行を持っています:
@Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.CategoryName)
しかし、何らかの理由でページを実行すると、モデルのカテゴリ名の実際の値がドロップダウンリストで選択されていない場合は、誰にでも問題が何であるか教えてもらえますか?モデルにはカテゴリ名があり、その名前はドロップダウンリストの値のリストにあります。キャラクターのケースは同じです...
回答:
回答№1は0明らかにここの問題は、ViewBagオブジェクトは、モデルプロパティの名前と同じであってはなりません。私の場合は、プロパティとViewbagインスタンスの両方にCategoryNameという名前を付けました。コードを変更すると:
ViewBag.Categories = new SelectList(catList, "key", "value");
そして
@Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.Categories)
それはうまく動作します。 私は "なぜこれが正確かは分かりませんが、おそらくモデルバインディング辞書と何か関係があるでしょうが、これが確かな理由です。実際にカーテンの背後に起こっていることを誰もが説明でき、なぜこの名前付けに問題がありますか?