2011-09-12 5 views
0

ノックアウトJSを見ています。ビルドしているMVC3プロジェクトとどのように統合できますか?ノックアウトと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

これを行う一般的な方法は、モデル値をページにシリアル化することです。

データバインド=「オプション:選択肢、selectedOptions:selectedChoices」

+0

そして、私が与える

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

はその後、ちょうどあなたのような選択に標準のデータバインドを使用します。これは、のようなものになるでしょう強く型付けされたヘルパー(@ Html.DropDownListFor)を使用し、代わりに(@ Html.DropDownList)を使用しますか? - – BrightonDev

+0

@BrightonDev - MVCヘルパーはサーバーサイドコード用に作られています。これは根本的に異なるパラダイムです。あなたが強く型付けされたヘルパーを作成して、コントロールを適切なKnockoutjsバインディングでレンダリングするのを止めるものは何もありません。個人的には、メタルからさらに遠ざかりますが、それは価値があるとは思いませんが、それはオプションです。 –

+0

は前のコメントに同意します。 –

関連する問題