Asp.net mvc 4 使用HomeController执行其他操作的错误做法?

Asp.net mvc 4 使用HomeController执行其他操作的错误做法?,asp.net-mvc-4,Asp.net Mvc 4,我们有一个ASP.NET MVC4移动应用程序,现在有5个额外的操作可以从主页调用。这些操作非常简单,但在我看来,它们位于/Home/BrowseMsg、/Home/CompleteMsg等下似乎是错误的,类似于/Home/About和/Home/Contact位于Home下的方式。然后,视图也包含在它们的*.cshtml文件中,位于/View/Home/BrowseMsg.cshtml下,依此类推。对于About和Contact,这似乎是有道理的,但对于与域相关的操作,这感觉不太对。我更希望有

我们有一个ASP.NET MVC4移动应用程序,现在有5个额外的操作可以从主页调用。这些操作非常简单,但在我看来,它们位于/Home/BrowseMsg、/Home/CompleteMsg等下似乎是错误的,类似于/Home/About和/Home/Contact位于Home下的方式。然后,视图也包含在它们的*.cshtml文件中,位于/View/Home/BrowseMsg.cshtml下,依此类推。对于About和Contact,这似乎是有道理的,但对于与域相关的操作,这感觉不太对。我更希望有一个MsgController或者有这些附加操作的东西。对于这个问题,可能没有正确或错误的答案,但我可能遗漏了一些关于如何在配置上应用约定的内容。我非常感谢任何人在这方面的经验来分享他们的想法。我知道你可以通过配置来做任何你需要的事情,但是这有意义吗? 提前感谢您提供的任何见解。
问候

你走的是正确的道路。通常一个控制器应该专注于特定的功能。它符合,也就是说一个类必须有一个职责(因此一个类封装了一系列与一个特定实体/目标相关的字段、属性和方法等)。类似地,控制器应该负责控制特定功能的请求

这一切都是为了更好地组织代码,使其更可读、更易于理解和维护。在您的情况下,似乎需要使用特定的控制器

如果您有大型ASP.NET MVC应用程序,建议使用区域功能,每个区域都应该有与一个模块相关的代码(模型、视图和控制器等)。有关更多信息,请查看这篇文章:“”


希望它能让你更清楚地前进。谢谢。

通常情况下,正如我所知,每个模型或实体都有一个控制器是件好事。因此,对于一些具有共同点的操作,请使用控制器。就个人而言,我更喜欢使用MsgController而不是HomeController。即使是从控制器的名称,我也能意识到它与消息有关。该部门是根据业务需求而设立的。谢谢斯内什。这也正是我所想的——这违反了SRP。将所有这些操作放在HomeController中看起来充其量只是暂时的内聚。此外,它看起来也像是一个代码气味、大类,这是违反SRP的另一个症状。我进一步不同意“简单性”的合理化是对这种担忧的答案。我们总是可以在一个类中编写所有代码,并将其证明为“简单”。另一个问题是url——在url中包含/Home/也会产生误导。当我更多地考虑这一点时,将所有这些操作分组到HomeController中可能更像是“巧合”内聚而不是“暂时”内聚的例子。