2011-09-12 32 views
0

我只是在看Knockout JS,以及如何將它與我正在構建的MVC3項目集成。Knockout和MVC - 綁定到使用模板化編輯器呈現的控件

查看數據從服務器下載的示例,在頁面渲染完成後,基本建模視圖模型(KVM)始終由Ajax調用填充。

這是做事的正常方式嗎?

我的頁面目前使用模板編輯模板,如渲染控制:

@Html.DropDownListFor(m => m.Holiday.Destination, SelectListHelpers.ToSelectList(Model.HolidayModel.Destinations, Model.Holiday.Destination), new { @class = "optionselect", data_bind = "value: Destination" }) 

但如果使用的淘汰賽,我不應該被輸出,構成了選擇列表中的腳本塊中的數組數據然後使用敲除綁定來填充選擇列表?

感謝您對此的任何建議。

回答

3

一個常見而簡單的方法是將您的模型值序列化到頁面上。這將是這樣的:

var viewModel = { 
    choices: ko.observableArray(@Html.Raw(Json.Encode(Options))), 
    selectedChoices: ko.observableArray(@Html.Raw(Json.Encode(SelectedOptions))) 
}; 

然後,只需使用一個標準的數據綁定在你的選擇,如:

數據綁定=「選項:選擇,selectedOptions:selectedChoices」

+0

而我給使用強類型幫助器(@ Html.DropDownListFor)並使用(@ Html.DropDownList)來代替? - – BrightonDev

+0

@BrightonDev - MVC幫助器是爲服務器端代碼編寫的。這是一個根本不同的範例。話雖如此,沒有任何東西阻止您創建自己的強類型幫助器,並使用適當的Knockoutjs綁定來呈現控件。就個人而言,我不確定這是否值得,因爲它會讓您遠離金屬,但它是一種選擇。 –

+0

同意以前的評論。 –