C# 如何在asp.net MVC中处理两个不同项目中的服务和视图模型?

C# 如何在asp.net MVC中处理两个不同项目中的服务和视图模型?,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我的项目遇到了问题。我有我的MVC网站,我的ViewModels就在那里,在第二个项目中,我有BuisnessLogic(服务),在它从db进入视图或其他途径之前,我有我所有的功能逻辑 以前,我的ViewModels与我的服务一起位于web项目之外,但现在,在我将它们移动到web项目中之后,我的服务崩溃了,因为我的服务用于返回ViewModels,并且由于循环依赖性,它们不再能够获取它们,因为网站需要获取服务方法,而服务需要ViewModels。所以基本上我现在很困惑,不知道该走哪条路 我是否应

我的项目遇到了问题。我有我的MVC网站,我的ViewModels就在那里,在第二个项目中,我有BuisnessLogic(服务),在它从db进入视图或其他途径之前,我有我所有的功能逻辑

以前,我的ViewModels与我的服务一起位于web项目之外,但现在,在我将它们移动到web项目中之后,我的服务崩溃了,因为我的服务用于返回ViewModels,并且由于循环依赖性,它们不再能够获取它们,因为网站需要获取服务方法,而服务需要ViewModels。所以基本上我现在很困惑,不知道该走哪条路


我是否应该将服务与ViewModels一起上移到网站项目中?还是我误解了MVC中服务的目的?或者也许有其他方法可以将服务与web项目分开

这方面没有官方记录的方法或标准最佳实践。这取决于你。一些人喜欢MVC,另一些人认为它会创建无组织的代码。只要维护三层架构,就不会出错


如果有一个单独的项目,其中包含服务、mvc和业务层可以引用的viewmodels,那该怎么办?但是我不能对viewModelswell使用数据注释。。我想你可以,但那会很难看的。。就我个人而言,我不会对viewmodels使用数据注释,但在将viewmodels映射到模型时,会对视图使用jquery验证,并在业务层中使用适当的验证。不知道如何解决您的问题并继续使用数据注释。您可以从控制器调用您的服务层,将对象返回到控制器并在控制器级别将其映射到viewmodel吗?正如@gutsmania所说。视图模型纯粹是web项目所关心的。控制器应该获得一些信息,然后将其放入与视图需要相匹配的模型中。因此命名为“视图模型”