我开始MVC和我了解这个职位的模型和的ViewModels,感谢的区别:区别?
http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications
但是我发现这对我的同事和印象,这是一种替代下现在使用敲除来将视图绑定到模型。有人可以解释这个吗?敲除绑定是否与定义具有属性的ViewModel类一样?
谢谢!
我开始MVC和我了解这个职位的模型和的ViewModels,感谢的区别:区别?
http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications
但是我发现这对我的同事和印象,这是一种替代下现在使用敲除来将视图绑定到模型。有人可以解释这个吗?敲除绑定是否与定义具有属性的ViewModel类一样?
谢谢!
在约定可以使用淘汰赛视图-model作为客户端,MVC视图模型作为服务器端。
你的问题:你如何决定使用哪一种?
答:您可以同时使用作为parallel.That意味着您的单cshtml
页面可以有一个淘汰赛视图模型是below.It同时包含属性和功能的unit.This视图模型的行为你需要什么样的客户端功能。
//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视图model.That是从数据库视图带来的数据并显示这些数据。
结论:因此,您可以在使用MVC时同时使用两个视图模型。
重要提示:但是,如果你需要使用单一的视图模型的两个场景,那么你可以做那件事also.For,你必须使用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>
您可以从Loading KnockoutJS View Models from ASP.Net MVC, for faster page loads
如果您需要了解更多关于淘汰赛检查learn.knockoutjs
我希望这将有助于你得到更多这方面的细节。
淘汰赛视图模型是客户端和MVC是服务器端,这是很大的区别。
淘汰赛允许您创建单页的应用程序,并封装在客户端逻辑。
的ViewModels在MVC只能服务器端渲染网页和处理回发。
Xharze的答案是正确的,但是......
如果您需要查看相关的逻辑添加到不能做客户端,那么你需要有服务器端查看模型的业务实体。如果不是,它们会变得多余
还有经典的MVC的差异,这些服务器端模式将不会被用于渲染服务器端的内容,他们将被暴露在使用客户端KO引擎REST
Knockout使用客户端视图模型; MVC使用服务器端视图模型。 – SLaks
所以它是一个或另一个?你如何决定使用哪一个? – RobVious