在 ASP.NET MVC 和 WPF MVVM 中重用相同的模型

2024-04-11

我正在 WPF MVVM 中开发一个应用程序,但我还需要在同一解决方案中创建一个 MVC 项目。

我想知道是否有任何方法可以在两个类中重用相同的模型,以及最好的方法,因为满足 MVVM 规范

例如,我需要将“PropertyChanged”添加到我的属性集中,这在 MVC 项目中是不必要的。


我同意@@Douglas Gandini 的观点。您应该在单独的程序集中定义业务对象,您可以从 ASP.NET 和 WPF 应用程序引用该程序集。这些类不应实现任何特定于客户端的接口,例如 INotifyPropertyChanged,而应是仅包含业务逻辑的纯 POCO 类。

然后,在 WPF 应用程序中,您可以创建一个视图模型类,该类实现 INotifyPropertyChanged 接口并包装业务对象的任何属性,这些属性在视图中公开和绑定是有意义的。

然后,视图模型具有对模型的引用,即在单独的程序集中定义的业务对象,该程序集可以在多个不同的客户端应用程序之间共享,并且视图绑定到视图模型。这通常是 MVVM 设计模式在 WPF 应用程序中(或应该)实现的方式。视图模型类包含您的应用逻辑,例如如何在数据绑定属性值更改时通知视图,并且模型包含在所有平台和应用程序中都相同的业务逻辑。

当然,这意味着您最终将拥有更多的班级,但这不一定是坏事,因为每个班级都有自己的责任。视图模型的职责是充当应用程序特定 XAML 视图的模型,而模型类的职责是实现业务逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 和 WPF MVVM 中重用相同的模型 的相关文章

  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • 子进程中的变量修改

    我正在研究科比和奥哈拉伦的作品Computer Systems A Programmer s Perspective 练习 8 16 要求程序的输出如下 我更改了它 因为他们使用了一个你可以在他们的网站上下载的头文件 include
  • 如何获取 C# PriorityQueue 元素的优先级

    我正在初始化一个存储 XY 坐标的优先级队列 根据距原点的欧几里得距离确定优先级 我创建了一个自定义Comparer这使得它作为最大堆运行 PriorityQueue
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • WCF 客户端返回空数组 - XML 响应似乎正常

    我正在尝试为我们的 Intranet 上托管的 Web 服务创建一个简单的 WCF 客户端 C 使用 Fiddler 和 SoapUI 我可以看到请求和响应似乎正常 但是当我运行代码时返回一个空数组 我会尝试只粘贴相关的行 但会是很多东西
  • 泛型类上的 DebuggerDisplay

    我在应用时遇到问题DebuggerDisplay泛型类的属性 DebuggerDisplay foo class Foo DebuggerDisplay Bar t class Bar
  • 模板“内联”函数的静态局部变量[重复]

    这个问题在这里已经有答案了 static的局部变量inline如果我的理解是正确的 C 中的函数保证像单个全局变量一样存在 如果inline函数是一个模板 编译器可以在哪里生成该函数的多个版本 下面这篇文章应该很好地回答你的问题 http
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l
  • 如何修改 edmx 的默认代码生成策略?

    我想修改默认的代码生成策略 该怎么做 我只是想修改类名 lt code Escape container gt to Entities并将默认连接字符串更改为name Default 我不想为该项目创建模板文件 我想编辑它以便它可以在全球范
  • DropDownList 列表中的项目

    谁能告诉我在下拉列表中添加所有项目的最短方法List
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • 将纬度/经度转换为 X/Y,以便在美国地图图像上进行阿尔伯斯投影

    我正在尝试使用 C 或 Javascript 将纬度 经度转换为 X Y 坐标 以将带有 CSS 的 div 左 上 定位到美国地图的背景图像上 美国的标准地图投影是阿尔伯斯投影 如下所示 但 StackOverflow 仅提供参考基本墨卡
  • 使用可变参数模板函数计算多个值的平均值

    我正在尝试编写一个函数来确定任意数量参数的平均值 所有参数都具有相同的类型 出于学习目的 我尝试使用可变参数模板函数来做到这一点 这是我到目前为止所拥有的 template
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • 如何将这个基于代码的 WPF 工具提示转换为 Silverlight?

    以下工具提示代码适用于WPF 我正在努力让它发挥作用银光 但它给了我这些errors TextBlock does not contain a definition for ToolTip Cursors does not contain
  • 在 C++17 中编译具有非固定基础类型的 constexpr 从 int 静态转换为作用域枚举的未定义行为

    我想知道以下内容是否应该在 C 17 中编译 enum class E A B constexpr E x static cast
  • 恐怖分子已弃用

    正在接听另一个问题 https stackoverflow com q 11830514 1468366 我偶然发现了man page http linux die net man 3 herror一个名为的函数herror 看起来很像pe
  • 在 Visual Studio C++ 资源编辑器中导入 png 文件

    我希望能够在 Visual Studio 资源编辑器中导入 png 文件 以便能够在不同的其他项目中使用嵌入的资源 有解决办法吗 我知道它适用于位图 但我对 png 感兴趣 因为即使在较低格式 16x16 或 32x32 上也可以使用 透明
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G
  • “while(true) { Thread.Sleep }”的原因是什么?

    我有时会遇到以下形式的代码 while true do something Thread Sleep 1000 我想知道这是否被认为是好的做法还是坏的做法以及是否有任何替代方案 通常我在服务的主函数中 找到 这样的代码 我最近在 Windo

随机推荐

  • 如何创建带有括号和参数的自定义 jquery 函数

    我知道我的问题需要更多澄清 所以让我解释一下 当我访问 fn extend 的 jquery api 文档时 我个人对创建如下所示的自定义 jquery 函数是多么容易感到震惊 input type checkbox check 链接在这里
  • 如何使用react.js上传Excel工作表文件并将数据显示到表格

    我是 React JS 的新手 我正在尝试使用react js上传Excel工作表文件并将数据显示到表格中 我有 链接中的部分参考 但并不完整 请帮忙解决一下 从 Excel 导入数据并在 React 组件中显示 https stackov
  • MVC 3 应用程序中的自定义 Http 处理程序

    我正在使用 Http 处理程序来本地化应用程序中使用的 javascript 文件 看 在 ASP NET 中本地化 JavaScript 文件中的文本 http madskristensen net post Localize text
  • Gulp - 处理多个主题和文件夹

    我正在努力创造一个终极gulpfile我们可以在我们的大型网站之一上使用它 一个具有多个主题 具体取决于您所在网站的部分 我试图让它只运行它需要运行的进程 而不是重新编译所有内容 让我准确地布局我想要实现的目标 文件夹结构 src mast
  • C# 反射:获取解决方案中的“所有”活动程序集?

    这是我的问题 我有 2 个项目 一个 常见 项目 其行为类似于具有各种支持代码的库 以及在许多调用中使用所述项目的实际程序 我们将这些项目称为 Common 和 Program 它们都在同一个解决方案中 在 Common 中 我有一个用于常
  • 使用我自己的 Laravel API 时如何遵循“不重复”原则?

    我正在开发一个 Laravel 4 应用程序 它将通过 JSON REST API 和 Web UI 对我的数据集提供相同的 CRUD 操作 看来 为了防止违反 DRY 原则 我的 UI 应该通过将所有请求从 UI 路由回 API 来使用我
  • 将 Rails/Unicorn/Nginx 容器连接到 MySQL 容器

    相关this https stackoverflow com questions 31735529 docker image from existing rails unicorn mysql app线程 我正在尝试创建 2 个容器 1 个
  • Service Fabric:找不到 EntryPoint Blah.exe

    我进行了一些项目重命名并更改了文件夹结构 现在我无法将服务结构应用程序部署到本地服务结构集群 Register ServiceFabricApplicationType 找不到 EntryPoint IdentityService exe
  • Selenium 代码不会终止

    以下代码不会终止 原因可能是什么 from selenium import webdriver from selenium webdriver common keys import Keys driver webdriver Firefox
  • Mod_Rewrite 规则冲突让我发疯

    我有一个 htaccess 如下 有些规则是冲突的 我需要以某种方式制定一个条件 这样他们就不会 RewriteEngine On RewriteRule search results template php L RewriteRule
  • 使用 Composer 安装 PEAR 扩展 HTTP_Request2

    我有一个composer json file name vendor Project description description text repositories type pear url http pear php net req
  • 在 gstreamer 中动态添加和删除 tee 队列

    我编写了gstreamer代码 用于同时进行摄像头直播和录制 我的管道看起来像这样 queue1 videosink v4l2src tee queue2 filesink 目前直播和文件录制正在协同工作 现在我需要启动只有一个队列的管道
  • 设置 NSWindow 焦点

    我有一个带有一个窗口和一个面板的应用程序 附加到该窗口 steps 停用我的应用程序 应用程序已打开 但没有焦点 单击面板上的按钮 面板现在处于焦点状态 但主窗口不是 如何从面板将焦点设置到主窗口 父窗口 Swift 5 版本的 BUDAx
  • 在自定义插件类中使用 Carbon Fields

    我有一个到目前为止还没有任何功能的插件 这是当前的结构
  • 木槌的基本用法。第一步

    我正在尝试使用Mallet实际上没有主题建模等方面的经验 我的目的是获得N的主题M我现在拥有的文档 用一个或多个主题对每个文档进行分类 文档 1 主题 1 文档 2 主题 2 可能还有主题 3 并用此结果对将来的新文档进行分类 我尝试使用b
  • 使用 Angular ui-router 有条件地导航到状态

    目前 我们有一个测试版的 投资组合 工具 用户登录主应用程序后 如果他们已获得测试版的访问权限 他们可以直接导航到投资组合工具 无需任何额外的登录 如果没有 他们应该被重定向到投资组合登录页面 状态称为portfolio login 他们可
  • 在我的服务器上运行其他人代码(沙箱)的安全方法?

    我想制作一个在本地运行其他人的代码的网络服务 当然 我想限制他们的代码对某个 沙箱 目录的访问 这样他们就无法连接到我服务器的其他部分 数据库 主网络服务器等 最好的方法是什么 运行VMware Virtualbox 我猜它已经尽可能安全了
  • 如何检查 Tensorflow LinearClassifier 的特征权重?

    我正在尝试理解使用 TensorFlow 的大规模线性模型 https www tensorflow org tutorials linear文档 这些文档对这些模型的推动如下 线性模型比神经模型更容易解释和调试 网 您可以检查分配给每个特
  • HTTP Cookie 的替代方案?

    他们说 Cookie 是bad http cafe elharo com web why cookies are bad for you 3 我个人认为应该有一种 更智能 的方法来检测网络应用程序上用户的状态 比如说 目前这就是它在分布式环
  • 在 ASP.NET MVC 和 WPF MVVM 中重用相同的模型

    我正在 WPF MVVM 中开发一个应用程序 但我还需要在同一解决方案中创建一个 MVC 项目 我想知道是否有任何方法可以在两个类中重用相同的模型 以及最好的方法 因为满足 MVVM 规范 例如 我需要将 PropertyChanged 添