2012-05-01 41 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。謝謝邁克爾。 –