C# 在MVC中,一个视图应该有一个控制器吗?

C# 在MVC中,一个视图应该有一个控制器吗?,c#,asp.net-mvc,asp.net-mvc-4,model-view-controller,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 4,Model View Controller,Asp.net Mvc 5,我目前在MVC5 Web应用程序中工作,有人建议我采用每个控制器一个视图的方法,我认为这种方法将非常难以维护,MVC的优势将丧失 请建议,因为我的应用程序将有大约180个用户界面页面,这将意味着180控制器根据建议 简短的回答:没有 这不是ASP.NET MVC的工作方式。一个控制器应对属于一个任务/区域的视图的所有操作进行分组,就像AccountController处理所有与帐户相关的操作一样。具体如何分组取决于您的应用程序。 当然,这并不意味着您不能使用多个控制器来处理与帐户相关的内容,但我

我目前在MVC5 Web应用程序中工作,有人建议我采用每个控制器一个视图的方法,我认为这种方法将非常难以维护,MVC的优势将丧失

请建议,因为我的应用程序将有大约180个用户界面页面,这将意味着180控制器根据建议

简短的回答:没有

这不是ASP.NET MVC的工作方式。一个控制器应对属于一个任务/区域的视图的所有操作进行分组,就像AccountController处理所有与帐户相关的操作一样。具体如何分组取决于您的应用程序。 当然,这并不意味着您不能使用多个控制器来处理与帐户相关的内容,但我只会在控制器开始变大时才开始将操作拆分为多个控制器。对于真正的大,我指的是几百行代码或更高的两位数操作计数。 但是,即使这样,将一些逻辑移到单独的helper类中,并将可能只在一个控制器中调用helper方法的所有操作保留下来,可能会更有意义

想象一下视图的以下文件夹结构:

-观点/ -会计行动1/ ---AccountAction1.cshtml -会计行动2/ ---AccountAction2.cshtml -会计行动3/ ---AccountAction3.cshtml

与以下内容相比,这似乎有点奇怪:

-观点/ -帐目/ ---Action1.cshtml ---Action2.cshtml ---Action3.cshtml


好的,那么你的问题是什么?你应该以逻辑的方式对你的控制器进行分组。具体情况取决于您的应用程序。如果管理层/领导层强迫您这样做,您无法说服他们,否则,我肯定会至少将您的控制器安排到逻辑组中。我的应用程序有不同的模块,因此我开发了特定于模块的控制器。但现在我被迫使用一个视图,一个控制器,例如,如果有4个视图,如Contact、Home、Details,它们与一个模块相关,而有4个不同的控制器,我觉得这是愚蠢的。@ashutoshjambhale:如Contact、Home、Details,这听起来像是每个控制器的案例,但是,联系人页面是否至少有两个视图和操作,如ContactForm和ContactFormSubmitted?