2011-07-25 66 views
2

我见过很多关于MVVM与MVC和博客的博客,他们说MVVM就像Windows中的MVC扩展。我有一个设计问题,我做了一个使用MVVM的win应用程序,现在我必须在Web中创建一个相同的应用程序,所以我决定在Asp.net中使用MVC模式,但是现在我又陷入了一个点。在Asp.net MVC中重用ViewModel

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

有没有其他灵魂?我的主要要求是重用应用程序逻辑?我使用了http://waf.codeplex.com/ WpfApplication框架作为参考。

在此先感谢。

回答

5

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

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

什么你应该是移动有在任WPF或ASP.NET不依赖成可重用的库真正可重用的代码。这段代码是应该在两个应用程序中重用的代码。您的ViewModels和控制器属于它们设计用于服务的应用程序框架。

2

您的业务逻辑应该位于您的模型中,而不是您的视图模型中。所以这是你想要重复使用的模型,没有别的。查看模型特定于您的Windows应用程序,并等同于特定于Web应用程序的控制器。

+1

@很抱歉,应该是“业务逻辑”。在这种情况下,我同意你的文章 - 即重用业务逻辑,但不要尝试重用应用程序逻辑。 –

+0

到目前为止,这是我在这个主题上找到的最好建议,但是如何处理在不同平台之间共享模型而不重复其定义来处理诸如数据注释和属性的验证和序列化之类的事情?我希望将它们定义在一个地方(模型),并重复使用它们无法找到任何有关这种做法的最佳方法。有关此主题的任何想法或资源? – SelAromDotNet

+0

@Josh不知道你在做什么,但要分享模型,把它放在自己的项目中并重用它。数据注释和序列化属性被设计为与平台无关:即有效模型的规则将与任何相同,因此请在模型上声明它们。您在哪里以及如何验证取决于技术,因此需要从主机应用程序触发验证。 –