慣例では、Knockout view-model をクライアント側として使用し、MVC view-model をサーバー側として使用できます。
あなたの質問:どちらを使用するかをどのように決定しますか?
回答 :両方を並行して使用できます。つまり、単一のcshtml
ページにノックアウト ビュー モデルを含めることができることを意味します。これには、プロパティと機能の両方がユニットとして含まれています。このビュー モデルは、クライアント側に必要な動作を示します。機能。
//This is a simple Viewmodel
//JavaScript that defines the data and behavior of your UI
function AppViewModel() {
var self = this;
self.firstName = ko.observable();
self.lastName = ko.observable();
self.fullName = ko.computed(function () {
return self.firstName() + " " + self.lastName();
});
self.capitalizeLastName = function () {
var currentVal = self.lastName();//Read the current value
self.lastName(currentVal.toUpperCase());//Write back a modified value
};
}
ただし、サーバー側の動作を表示するには、MVC ビューモデルでより複雑な (またはより多くのプロパティ) を使用できます。これは、データベースからデータを取得し、それらのデータをビューに表示するためのものです。
結論: MVC を使用する場合、両方のビューモデルを同時に使用できます。
重要な注意:ただし、両方のシナリオで単一のビューモデルを使用する必要がある場合は、そのこともできますKnockoutJS Mapping plugin
。
以下のように使えます。
<script src="~/Scripts/knockout.mapping-latest.js"></script>
<script type="text/javascript">
$(function() {
var viewModel = ko.mapping.fromJS(@Html.Raw(Model.ToJson()));
ko.applyBindings(viewModel);
});
</script>
ページの読み込みを高速化するために、ASP.Net MVC から KnockoutJS ビュー モデルを読み込むから詳細を取得できます。
Knockout について詳しく知りたい場合は、learn.knockoutjsを確認してください。
これがお役に立てば幸いです。