2012-05-27 78 views
3

因此,MCV3的工作方式是通過路由來定義要調用的控制器。該控制器是「myControllerName」+「控制器」。如何從MVC3中的控制器名稱中刪除「Controller」?

現在這個類已經存在於一個名爲controllers的文件夾中。我不想在我的課程名稱末尾添加這樣的裝飾。這並不是真正的貢獻。

我想知道如何改變,並更多地瞭解MVC3內部發生了什麼。

回答

5

簡短的回答是:不打擾。這是慣例(也稱爲約定優於配置,COC)配置,你會活得更快樂,更健康的沒有壓力的生活,如果你只是隨大流,讓MVC做就是了。

較長的答案是你注入一個定製的控制器工廠到MVC管道覆蓋默認的一個。該過程的完整描述可以發現in this article但是,本質上,您可以:

  1. 實施IControllerFactory做任何你想要的。
  2. 在你Application_Start情況下,調用ControllerBuilder.Current.SetControllerFactory用自己替換默認控制器工廠。

MVC是一種高度可擴展的框架;儘管大多數組件的默認行爲可能會滿足您的需求,但您幾乎可以隨時用自己的內置對象替換它們。對於您可以覆蓋的其他內容,請參閱13 extensibility points of MVC3的此列表。

而且,我忘了最初提及,但如果你是在MVC的膽量真正感興趣的,整個框架是開源(其下的APL),你可以找到它on codeplex.

+0

這正是我在尋找答案的深度。 – QueueHammer

+0

如果你真的想看看MVC裏面發生了什麼,請參閱我編輯的源代碼鏈接。 –

0

控制器後綴被認爲是MVC的約定(這裏查看關於約定優於配置方法http://en.wikipedia.org/wiki/Convention_over_configuration的一些細節),它具有價值,因爲它爲所有MVC項目提供了一致的結構。另外它還描述了MVC模式中類的功能。

MVC是非常關注慣例,如果你想要的東西,更多的是配置也許看看ASP.Net Web窗體

0

文件夾名稱只有你作爲一個人有用。編譯器並不在意,它被全部編譯成單個DLL,並且該文件夾是不相關的(儘管默認情況下它確實通過「控制器」進入命名空間)。該文件夾根本沒有上傳到最終的網站。

因爲該文件夾不存在於服務器上,你不能使框架假設,因爲它是在Controllers文件夾這是一個控制器。它只是不這樣工作,也沒有任何方法使它以這種方式工作(再次,因爲控制器文件夾不存在於服務器上)。

命名事物xxxController的約定是讓事情變得更簡單。如果你不想遵循MVC的規定,那麼MVC可能不適合你。如果你想對抗流量,它只會讓你的生活變得更加困難。

這就像抱怨說,你不喜歡用.cs文件命名你的C夏普的文件,或者你不喜歡一個.aspx命名您的Web表單形式。

相關問題