我发现了许多与此问题相关的问题和答案,但对我没有任何帮助
我正在创建一个像这样的下拉列表
@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 issue
所以我尝试了所有这些变化
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循环创建选择列表并标记每个项目的选定属性,但为什么上述不起作用?
答案 0 :(得分:23)
发现问题。
我正在做的错误就是使用这个
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();" })
谢谢!
答案 1 :(得分:3)
解决方案对我不起作用。事实证明,如果ViewBag属性名称和模型属性名称相同,则所选属性不起作用,因此在更改其工作的ViewBag属性名称之后。