如何从MVC3中的控制器名称中删除“Controller”?

时间:2012-05-27 02:58:51

标签: asp.net asp.net-mvc-3

所以MCV3的工作方式是你定义通过路由调用哪个控制器。该控制器是“myControllerName”+“Controller”。

现在该类已经在名为controllers的文件夹中。我不想在我的班级名字的末尾装饰。它并没有真正贡献任何东西。

我想知道如何改变并更多地了解MVC3内部的内容。

3 个答案:

答案 0 :(得分:5)

简短的回答是:不要打扰。这是按惯例配置(也称为约定优于配置,CoC),如果你顺其自然,你将过上更幸福,更健康的无压力生活,让MVC做你想做的事。

更长的答案是将自定义控制器工厂注入MVC​​管道以覆盖默认管理器工厂。可以找到该过程的完整描述in this article,但基本上,您:

  1. 实施IControllerFactory做任何你想做的事。
  2. Application_Start活动中,请致电ControllerBuilder.Current.SetControllerFactory,将您自己的默认控制器工厂替换为。
  3. MVC是一个高度可扩展的框架;虽然大多数组件的默认行为可能会满足您的需要,但您几乎总能用自己的内容替换内置对象。对于您可以覆盖的其他内容,请参阅13 extensibility points of MVC3

    的此列表

    另外,我最初忘了提及,但如果你真的对MVC的内心感兴趣,那么整个框架都是开源的(它在APL下),你可以找到它on codeplex.

答案 1 :(得分:0)

控制器后缀被认为是MVC的约定(有关配置方法http://en.wikipedia.org/wiki/Convention_over_configuration的约定的详细信息,请参见此处),它具有价值,因为它为所有MVC项目提供了一致的结构。另外,它描述了MVC模式中类的功能。

MVC非常关注约定,如果你想要更多关于配置的东西或许看看ASP.Net webforms

答案 2 :(得分:0)

文件夹名称仅对您作为人类有用。编译器并不关心,它都被编译成单个DLL,并且该文件夹是无关紧要的(尽管默认情况下它会被放入带有“控制器”的命名空间)。该文件夹根本不会上传到最终网站。

因为服务器上不存在该文件夹,所以不能让框架假设因为它位于Controllers文件夹中而是控制器。它只是不起作用,也没有办法让它以这种方式工作(同样,因为服务器上不存在Controllers文件夹)。

命名事物xxxController的惯例是使事情变得更容易。如果你不想遵循MVC规定的复仇,那么MVC可能不适合你。如果你想要对抗流动,它只会让你的生活变得更加困难。

抱怨你不喜欢用.cs扩展名命名你的C Sharp文件,或者你不喜欢用.aspx命名你的Webforms表单。