Rob*_*ous 3 model-view-controller asp.net-mvc viewmodel asp.net-mvc-3 knockout.js
我正在启动MVC,我理解模型和ViewModels之间的区别,感谢这篇文章:
http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications
然而,我向同事展示了这一点,现在我觉得这是使用knockout将视图绑定到模型的替代方法.有人可以解释一下吗?敲除绑定是否与定义具有属性的ViewModel类相同?
谢谢!
在约定中,您可以使用Knockout视图模型作为客户端,MVC视图模型作为服务器端.
你的问题:你如何决定使用哪个?
答:你可以同时使用两者.这意味着你的单个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
};
}
Run Code Online (Sandbox Code Playgroud)
但是对于show server side behavior,您可以使用更复杂(或更多属性)的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>
Run Code Online (Sandbox Code Playgroud)
您可以从ASP.Net MVC加载KnockoutJS View Models获取更多有关此内容的详细信息,以加快页面加载速度
如果您需要了解更多关于Knockout的信息,请查看learn.knockoutjs
我希望这会对你有所帮助.
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |