/ / Viewbagを介してバインドされている場合、ドロップダウンリストは選択されたモデル値をバインド/表示できません - モデルビューコントローラ、バインディング、モデル、ビューバック

Viewbag-model-view-controller、バインディング、モデル、ビューバックを使用してバインドされると、ドロップダウンリストで選択したモデル値をバインド/表示できない

私はコントローラに次のコードを持っています:

 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)

それはうまく動作します。 私は "なぜこれが正確かは分かりませんが、おそらくモデルバインディング辞書と何か関係があるでしょうが、これが確かな理由です。実際にカーテンの背後に起こっていることを誰もが説明でき、なぜこの名前付けに問題がありますか?