【问题标题】:Resuse ViewModel in Asp.net MVC在 Asp.net MVC 中重用 ViewModel
【发布时间】:2011-10-12 13:27:24
【问题描述】:

我看过很多关于 MVVM 与 MVC 的博客以及说 MVVM 就像 Windows 中的 MVC 扩展的博客。

我有一个设计问题,我制作了一个使用 MVVM 的 win 应用程序,现在我必须在 Web 中创建一个相同的应用程序,所以我决定在 Asp.net 中使用 MVC 模式,但现在我又陷入了困境。

如何在 MVC 中重用 ViewModel?因为 ViewModel 有导入命名空间 System.Windows.Input。

有没有其他的灵魂?我的主要要求是重用应用程序逻辑?

我使用了http://waf.codeplex.com/ WpfApplication 框架作为参考。

提前致谢。

【问题讨论】:

    标签: asp.net-mvc mvvm asp.net-mvc-viewmodel


    【解决方案1】:

    事实上,这两者是不可互换的。他们也不应该是(在实际意义上)。是的,您可以创建也可以在 ASP.NET MVC 中重用的 ViewModel。但是你必须合并的抽象数量会使这个练习毫无用处。

    您不应该浪费时间担心这种不兼容性,努力减少/消除它。

    应该做的是将不依赖于 WPF 或 ASP.NET 的真正可重用的代码移到可重用的库中。这段代码应该在两个应用程序中重用。您的 ViewModel 和 Controller 属于它们旨在服务的应用程序框架。

    【讨论】:

      【解决方案2】:

      您的业务逻辑应该在您的模型中,而不是在您的视图模型中。所以这是您要重用的模型,仅此而已。视图模型是特定于您的 Windows 应用程序的,相当于特定于 Web 应用程序的控制器。

      【讨论】:

      • @Will 抱歉,应该是“业务逻辑”。在这种情况下,我同意您的帖子 - 即重用业务逻辑,但不要尝试重用应用程序逻辑。
      • 到目前为止,这是我在这个主题上找到的最好的建议,但是你如何处理在不同平台之间共享模型而不复制它们的定义来处理验证和序列化数据注释和属性等事情?我希望在一个地方(模型)定义这些并重用它们找不到任何关于最佳方式的信息。关于这个主题的任何想法或资源?
      • @Josh 不太清楚你在追求什么,但是为了共享模型,把它放在自己的项目中并重用它。数据注释和序列化属性被设计为独立于平台:即有效模型的规则将是相同的,所以在你的模型上声明它们。验证的位置和方式取决于技术,因此请从主机应用程序触发验证。
      • 我最初所做的是将模型和视图模型类放在一个可移植库中,以便在 win8 和 wp7/8 中使用。像魅力一样工作!但现在我想为我的 asp.net mvc 版本的项目重复使用尽可能多的内容。我猜我可以重复使用我的模型,但它们也有 inotifyproperty 的东西(用于数据绑定)在网络上重新使用它们有什么危险吗?
      • @Josh INotifyPropertyChanged 不是特定于技术的:它只是引发变更事件的一种模式。所以重复使用。
      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多