我想我发现了一个knockout.js与asp.net mvc dropdownlist结合的bug。仅提供字符串列表时,MVC不会在select元素上显示选项值。 Knockout.js不会因此更新值。如果我使用下面的第二个html代码片断,可以明确告诉它它的属性。如果选项值不可用,不应该knockout.js读取内部html吗?当选择列表没有选项时knockout.js不工作
不更新
@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>
在您的*不更新*代码段中,是否出现下拉列表?我会很惊讶,它不会产生错误。我不认为只需将字符串列表转换为选择列表项目列表,而无需像在* Updates *片段中那样帮助编译器。 – arb
是的,选项虽然没有值。 –