类在ASP.NET MVC中的位置

时间:2013-11-14 22:08:07

标签: asp.net asp.net-mvc

我正在使用ASP.NET MVC。我做了3节课。我想知道我应该在哪里存储这些课程?根据我对MVC的理解,它们不应该存储在Controller部分中。是对的吗?

5 个答案:

答案 0 :(得分:2)

控制器部分用于控制器,因此在那里存储其他类型的类是没有意义的。你可以将它们存储在你想要的任何地方。只需根据需要制作文件夹或对其进行分类即可。这一切都归结为你自己的习俗和风格。

考虑这些课程的作用,以及如何对它们进行分类。

答案 1 :(得分:2)

您在询问什么类型的课程?

控制器进入Controllers文件夹,Views进入Views文件夹,Models进入Models文件夹。 一般来说,应该在这些相应的文件夹中。

如果您需要一些“帮助者”(例如工厂类),通常建议将它们放在与“控制器”,“视图”和“模型”文件夹相同级别的单独文件夹中。但是,通常尽可能多的逻辑应该在控制器中(当然,除非你有一个单独的中间层)。

根据评论进行更新:

  

我正在制作日历应用程序。所以当用户键入开始时   日期和结束日期,我的班级将计算实际天数。   前周一周五周五活动的天数。然后事件将是   添加到数据库中。所以我可以实例化这个对象(一个   计算控制器中的天数并添加到数据库中   然后把它传递给模特?或者逻辑应该在模型上完成   层

我会在控制器中执行此操作。 MVC流程从控制器开始,控制器填充模型,然后将模型传递给视图并返回视图。

但是,您还应该区分域模型视图模型。你的视图模型真的不应该与数据库有任何关系;它只在那里填充视图。域模型可以有双重目的,但我更喜欢将它们分开。

无论哪种方式,实际的数据库访问逻辑(如果它不在中间层)更适合控制器而不是模型。我会在控制器中实例化你的帮助器对象,并让它在控制器中做它需要做的事情;通常不需要将数据库访问对象传递给视图模型。

当然,这通常是一种说法,可能会有例外情况在某些情况下效果更好。

答案 2 :(得分:0)

我相信你指的是模型类,所以把它们放在Models

答案 3 :(得分:0)

我强烈建议您在面向对象编程原则(SOLID)中研究一些时间,然后尝试理解“真实世界”MVC Web应用程序的体系结构应该是什么样子。 Ik明确提到“真实世界”,因为您在互联网上找到的许多教程都是技术可能性的简化表示,但他们并没有了解这将如何适合您自己的应用程序。我最近在这两个方面投入了大量时间,这对我帮助很大。不是说我现在掌握了所有的知识,但我确实得到了更好的理解。

作为您问题的答案:我认为这些类不应该在控制器文件夹中,因为它们不是控制器。我认为它们属于您的业务层(可以是单独的项目),因为它们负责某些业务逻辑。此外,将事件添加到数据库与日期计算不属于同一个类,因为这将违反SRP(http://en.wikipedia.org/wiki/Single_responsibility_principle)。这应该是一个单独的类,它位于您的数据层(可以是另一个单独的项目),您可以从您的业务层调用它。

另一个有趣的事情是这个反模式称为胖控制器(http://codebetter.com/iancooper/2008/12/03/the-fat-controller/)。

答案 4 :(得分:0)

如果这是程序的逻辑,我会创建一个层作为BLL(业务逻辑层)将该类放在那里并在表示层或其他任何地方使用它。