【发布时间】:2012-05-02 05:20:20
【问题描述】:
我想我在 knockout.js 中发现了一个与 asp.net mvc 下拉列表相关的错误。当仅提供字符串列表时,MVC 不会在选择元素上呈现选项值。因此,Knockout.js 不会更新该值。如果我通过明确告诉它的属性来使用下面的第二个 html sn-p 它可以工作。如果选项值不可用,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>
【问题讨论】:
-
在您的不更新 sn-p 中,是否出现了下拉列表?我很惊讶它不会产生错误。我不认为你可以像在 Updates sn-p. 中那样帮助编译器的情况下将字符串列表转换为选择列表项列表。
-
是的,但选项没有值。
标签: asp.net-mvc-3 drop-down-menu knockout.js