我想我在与 asp.net mvc 下拉列表结合使用的 knockout.js 中发现了一个错误。当仅提供字符串列表时,MVC 不会在选择元素上呈现选项值。因此,Knockout.js 不会更新该值。如果我通过明确告诉它属性来使用下面的第二个 html 片段,它可以工作。如果选项值不可用,knockout.js 不应该读取内部 html 吗?
不更新
@Html.DropDownListFor(m => m.Grade, new SelectList((IEnumerable<string>)ViewData[Config.ViewData.Grades], Model.Grade), new { data_bind = "value: selectedGrade" })
更新
@Html.DropDownListFor(m => m.Grade, new SelectList(((IEnumerable<string>)ViewData[Config.ViewData.Grades]).Select(q => new { Text = q, Value = q }), "Value", "Text", Model.Grade), new { data_bind = "value: selectedGrade" })
第一个下拉菜单呈现
<select>
<option>K</option>
<option>2</option>
<option>3</option>
</option>
第二个下拉列表呈现
<select>
<option value="K">K</option>
<option value="2">2</option>
<option value="3">3</option>
</option>