2012-07-13 81 views
0

我想創建基於模塊的結構,就像在zend框架中一樣。假設我有2個控制器,如學生和老師,我想把所有這些放在一個文件夾中,比如學校。同樣我也想上學夾中的每個控制器,用於例如如何爲asp .net mvc 3項目創建模塊基礎結構?

對於控制器的視圖文件:

D:\aspprojects\Project1\Project1\Controllers\School\TeacherController.cs 
D:\aspprojects\Project1\Project1\Controllers\School\StudentController.cs 

和視圖文件:

D:\aspprojects\Project1\Project1\Views\School\Teacher\all CRUD files(*.cshtml) 
D:\aspprojects\Project1\Project1\Views\School\Student\all CRUD files(*.cshtml) 

目前的結構類似如下,

適用於控制器:

D:\aspprojects\Project1\Project1\Controllers\TeacherController.cs 
D:\aspprojects\Project1\Project1\Controllers\StudentController.cs 

對於視圖文件

D:\aspprojects\Project1\Project1\Views\Teacher\all CRUD files(*.cshtml) 
D:\aspprojects\Project1\Project1\Views\Student\all CRUD files(*.cshtml) 

我需要什麼樣的變化呢?

+0

你可以使用一個叫做School的區域嗎? – Daveo 2012-07-13 05:59:30

回答

2

您面臨的問題是,MVC不關心控制器在哪個文件夾中。實際上,它甚至不必位於名爲Controllers的文件夾中。 MVC只在名稱中查找帶有Controller的類名。一旦編譯完成,文件夾結構就會丟失,因此,框架無法知道要在子文件夾中查看視圖,因爲該信息不再存在於編譯後的代碼中。

然而,你仍然可以做到這一點,但是你不能再依靠MVC自動查找你的視圖文件,你將不得不直接傳遞每個視圖名稱。

這意味着你將不得不這樣做:

return View("~/Views/School/Teacher/Index.cshtml"); 

比這更確切。

return View(); 

另一種選擇是使用的區域,它允許你創建一個學校區域,然後你可以創建學校區域內的教師和學生控制器。