2012-05-01 42 views
1

我想我发现了一个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> 
+0

在您的*不更新*代码段中,是否出现下拉列表?我会很惊讶,它不会产生错误。我不认为只需将字符串列表转换为选择列表项目列表,而无需像在* Updates *片段中那样帮助编译器。 – arb

+0

是的,选项虽然没有值。 –

回答

2

我把它叫做一个错误。请在Github上打开一个问题:https://github.com/SteveSanderson/knockout/issues

+1

看起来这样会在2.2中修复,https://github.com/SteveSanderson/knockout/commit/98ba90f264afe892499357ad256d9aaae2544aee。谢谢迈克尔。 –