Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我怎样才能删除“;控制员;从MVC3中我的控制器的名称?_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

Asp.net 我怎样才能删除“;控制员;从MVC3中我的控制器的名称?

Asp.net 我怎样才能删除“;控制员;从MVC3中我的控制器的名称?,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,因此,MCV3的工作方式是通过路由定义要调用的控制器。该控制器是“myControllerName”+“controller” 现在该类已经位于名为controllers的文件夹中。我不想在我的班名后面有这样的装饰。这并不是什么贡献 我想知道如何改变这一点,并进一步了解MVC3内部的情况。控制器后缀被认为是MVC的约定(有关约定优于配置方法的一些详细信息,请参见此处),它具有价值,因为它为所有MVC项目提供了一致的结构。此外,它还描述了MVC模式中类的功能 MVC非常注重约定,如果您想了解更多关

因此,MCV3的工作方式是通过路由定义要调用的控制器。该控制器是“myControllerName”+“controller”

现在该类已经位于名为controllers的文件夹中。我不想在我的班名后面有这样的装饰。这并不是什么贡献


我想知道如何改变这一点,并进一步了解MVC3内部的情况。

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


MVC非常注重约定,如果您想了解更多关于配置的信息,可以看看ASP.NETWebForms,简短的回答是:不用麻烦了。这是按惯例配置(也称为惯例优于配置,CoC),如果你只是顺其自然,让MVC做它想做的事,你会过上更快乐、更健康、没有压力的生活

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

  • 实现你想做的任何事情
  • 应用程序\u Start
    事件中,调用将默认控制器工厂替换为您自己的
  • MVC是一个高度可扩展的框架;尽管大多数组件的默认行为可能满足您的需要,但您几乎可以始终使用自己的对象替换内置对象。有关可以覆盖的其他内容,请参见以下列表


    另外,我一开始忘了提到,但是如果你真的对MVC的本质感兴趣,那么整个框架都是开源的(在APL下),你可以找到它,文件夹名只对你个人有用。编译器不在乎,它全部被编译到一个DLL中,而文件夹是不相关的(尽管默认情况下它确实被放入带有“控制器”的命名空间中)。文件夹根本不会上载到最终站点

    因为该文件夹在服务器上不存在,所以不能让框架假定它是控制器,因为它在Controllers文件夹中。它就是不能那样工作,也没有任何方法可以让它那样工作(同样,因为服务器上不存在Controllers文件夹)

    将事物命名为xxxController的惯例是使事情变得更简单。如果您不想遵循MVC规定的约定,那么MVC可能不是适合您的框架。如果你想与潮流抗争,那只会让你的生活更加困难


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

    这正是我想要的答案中的深度。如果你真的想了解MVC内部的情况,请参阅我的编辑以获得指向源代码的链接。