Asp.net-Mvc

所選值不適用於 SelectList

  • October 8, 2017

我發現了許多與此問題相關的問題和答案,但對我沒有任何幫助

我正在創建一個這樣的下拉列表

@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 屬性名稱和模型屬性名稱相同,則選定的屬性不起作用,因此在更改 ViewBag 屬性名稱後它起作用了。

引用自:https://stackoverflow.com/questions/16604313