gpt4 book ai didi

asp.net-mvc - knockout 和 .NET View 模型之间的区别?

转载 作者:行者123 更新时间:2023-12-01 09:31:56 25 4
gpt4 key购买 nike

我开始使用 MVC 并且我了解模型和 ViewModel 之间的区别,感谢这篇文章:

http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications

然而,我向我的同事展示了这个,现在的印象是这是使用 knockout 将 View 绑定(bind)到模型的替代方法。有人可以解释一下吗? knockout 绑定(bind)是否与定义具有属性的 ViewModel 类做同样的事情?

谢谢!

最佳答案

按照惯例,您可以将 Knockout View 模型用作客户端,将 MVC View 模型用作服务器端。

您的问题:您如何决定使用哪个?

答案:您可以同时使用两者。这意味着您的单个 cshtml 页面可以具有如下所示的 knockout View 模型。它同时包含属性和函数作为一个单元。此 View 模型用于客户端功能所需的行为。

    //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 View 模型。这是为了从数据库中获取数据并在您的 View 中显示这些数据。

结论:因此,您可以在使用 MVC 时同时使用这两种 View 模型。

重要说明:但是如果您需要在两种情况下都使用单一 View 模型,那么您也可以这样做。为此您必须使用KnockoutJS 映射插件 .

可以像下面这样使用。

<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 获得更多详细信息

如果您需要了解更多关于 Knockout 的信息,请查看 learn.knockoutjs

希望对您有所帮助。

关于asp.net-mvc - knockout 和 .NET View 模型之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com