我想我發現了一個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
是的,選項雖然沒有值。 –