gpt4 book ai didi

c# - WPF MVVM 与 Razor 页面 MVVM

转载 作者:行者123 更新时间:2023-11-30 15:52:10 30 4
gpt4 key购买 nike

WPF 中的 MVVM 模式非常强调将 ViewModel 与 UI 完全分离,理想情况下代码隐藏文件中没有任何内容或很少。这允许为不同类型的界面重用 ViewModel。

Razor Pages 中的 MVVM 模式具有作为 ViewModel 的代码隐藏,并通过 OnGet 和 OnPost 方法与 Web 逻辑紧密耦合。

因此,精心设计的解耦 WPF ViewModel 不能用作 Web ViewModel(或者可以网页模型使用?)

我是否遗漏了什么,为什么 WPF 中的 MVVM(解耦)和 Razor Pages 中的 MVVM(耦合)之间存在如此大的差异?

如果我们将 Razor Pages 方法应用于 WPF,那么代码隐藏将变成 ViewModel——我从未见过有人推荐过它。

最佳答案

为了清楚起见:WPF 以与 Razor Pages 相同的方式在 View 和 View 模型之间引入耦合。 View 模型是一个数据表示层,目的是打破 View 和模型之间的依赖关系。因此可以在不修改任何模型的情况下更改 View 。 View 模型本身然后耦合到模型,因为它获取所需的数据(例如,从服务或数据库)。此行为在 Razor 页面中以统一模式实现,方法是让 View 模型实现抽象 PageModel 并通过提供适当的可选操作处理程序(例如 OnGet())来遵循约定。只要为页面发出 HTTP 请求,框架就会调用这些处理程序。您将根据请求方法(例如 GET、DELETE、POST、PUT 等)获取或操作模型数据,然后将其呈现给 View 。该约定描述了这些处理程序的命名模式,以便框架可以识别它们。

因此,您会发现 WPF MVVM 和 Razor Pages MVVM 中层之间的耦合度相同。由于 RazorPages 中的 View 模型封装了特定页面的上下文,因此源文件命名遵循命名约定(“页面名称.cshtml.cs”)以使关系在文件系统中可见。它不是像 WPF 中 View 的 partial 类文件那样的代码隐藏文件。

关于c# - WPF MVVM 与 Razor 页面 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100912/

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