この問題に関連する多くの質問と回答を見つけましたが、何もうまくいきませんでした
私はこのようなドロップダウンリストを作成しています
@Html.DropDownListFor(m => m.SchoolYears, new SelectList(Model.SchoolYears, "YearId", "StartDates", Model.CurrentYearId), new { @class = "field_Dropdown", style = "width:100px;",onchange="return searchStudents();" })
(Model.CurrentYearId
のタイプはint
)
ただし、現在の年を選択することはできません。
この投稿から、選択した値に文字列を使用する必要があることがわかりました(ただし、選択した値にオブジェクトを使用できるため、理由はわかりません)
DropDownList SelectList SelectedValueの問題
だから私はこれらすべてのバリエーションを試しました
new SelectList(Model.SchoolYears, "YearId", "StartDates", Model.CurrentYearId.ToString())
new SelectList(Model.SchoolYears, "YearId", "StartDates", 2)
new SelectList(Model.SchoolYears, "YearId", "StartDates", "2")
しかし、それらは機能しませんでした。
Linqクエリまたはforeachループを使用して選択リストを作成し、各アイテムの選択されたプロパティをマークする方法がありますが、上記が機能しないのはなぜですか?
問題が見つかりました。
私がやっていた間違いはこれを使うことです
m => m.SchoolYears // m.SchoolYears in a list of string
これに変えたら
m => m.SelectedYearId // m.SelectedYearId is an integer property
それは魅力のように働いたので、最終的に私はこれを機能させます
@Html.DropDownListFor(m => m.SelectedYearId, new SelectList(Model.SchoolYears, "YearId", "StartDates", Model.CurrentYearId), new { @class = "field_Dropdown", style = "width:100px;",onchange="return searchStudents();" })
ありがとう!
解決策は私にはうまくいきませんでした。 ViewBagプロパティ名とModelプロパティ名が同じ場合、選択したプロパティは機能しないことが判明したため、ViewBagプロパティ名を変更した後は機能しました。