web-dev-qa-db-ja.com

選択した値がSelectListで機能しない

この問題に関連する多くの質問と回答を見つけましたが、何もうまくいきませんでした

私はこのようなドロップダウンリストを作成しています

@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ループを使用して選択リストを作成し、各アイテムの選択されたプロパティをマークする方法がありますが、上記が機能しないのはなぜですか?

13
Pawan Nogariya

問題が見つかりました。

私がやっていた間違いはこれを使うことです

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();" })

ありがとう!

23
Pawan Nogariya

解決策は私にはうまくいきませんでした。 ViewBagプロパティ名とModelプロパティ名が同じ場合、選択したプロパティは機能しないことが判明したため、ViewBagプロパティ名を変更した後は機能しました。

5
irfandar