Model view controller ASP.NET MVC3中控制器的正确设计方法

Model view controller ASP.NET MVC3中控制器的正确设计方法,model-view-controller,asp.net-mvc-3,Model View Controller,Asp.net Mvc 3,我有个问题。昨天,我开始学习ASP.NETMVC3,我创建了一个博客,在那里我可以添加、编辑、删除帖子并对这些帖子发表评论 但我觉得我想设计得与众不同,因为我觉得我做错了 我有两个控制器。HomeController和BlogController,我认为这是非常错误的,因为我没有/添加博客,而是添加帖子/评论。此外,我希望我的网站不仅从博客本身组成 在这个场景中我想做什么 /Controllers HomeController.cs /Blog PostControlle

我有个问题。昨天,我开始学习ASP.NETMVC3,我创建了一个博客,在那里我可以添加、编辑、删除帖子并对这些帖子发表评论

但我觉得我想设计得与众不同,因为我觉得我做错了

我有两个控制器。HomeController和BlogController,我认为这是非常错误的,因为我没有/添加博客,而是添加帖子/评论。此外,我希望我的网站不仅从博客本身组成

在这个场景中我想做什么

/Controllers
   HomeController.cs
   /Blog
      PostController.cs /* IndexAction - Show list of entries; DetailsAction - Show only one entry with comments under */
      CommentController.cs /* ListAction - Lists comments (not sure how to list them in Blog controller with PartialView yet...); AddAction - Add comment within Details of Post (again not sure if I can do this) */
   /SomeOtherThing
      SomeOtherController.cs /* Some random data from database like greeting in index page or whatever else not related to blog in any way */
   /Admin
      BlogController.cs /* For edit/delete blog data like comments/posts */
      SomeOtherController.cs /* For editing the other thing, not sure what for now */
      AccountsController.cs /* For editing accounts and such... */
我想我希望我的控制器层次结构看起来像这样,但我不确定这是否是正确的方法。我宁愿开始学习正确的方法,然后在我的第一个项目中错误地做,然后重新学习如何正确地做


另外,关于这些评论,将它们放在单独的控制器中是好主意吗?因为我想在Post操作中添加/显示。例如,
localhost/blog/post/1
将显示post+表单以添加评论+评论列表。但是我还不知道怎么做……)

在处理控制器数量易于管理的项目时,我通常将它们都放在根控制器文件夹中。我所在的团队通常会根据项目的规模和复杂性来决定是否需要创建“控制器层次结构”。也就是说,如果你发现用你定义的层次结构概念化你的项目更容易,那么就去做吧


我同意你的想法,将评论移动到它们自己的独立控制器中,因为它们是一个独立的实体,可以在“博客文章”之外进行设计和测试

当控制器数量较少时,将所有控制器保留在一个文件夹中。如果愿意,可以通过在global.asax文件中指定路由来“模拟”层次结构。看

当您预见到站点中有大量控制器时,请使用“区域”。区域提供了一种将大型MVC Web应用程序划分为较小功能组的方法。区域实际上是应用程序内部的MVC结构。另见