我們新建一個MVC的項目

默認的路由是這樣的,但是由於一些需求,我們需要對Controllers按照一些規則分類。
比如說我們在Controllers下面建了一個School的文件夾,然后建了一個Student的控制器。


然后我們運行項目,當然默認訪問的還是Home/Index這個頁面,這時我們可以通過在瀏覽器中輸入School/Student/Index來訪問Student下面的頁面嗎???、
我們來試試!!!

很顯然不行,我們再來看看我們View下面的結構

這里的Student文件夾是直接在放在Views下面的,School文件夾和Student下面的Index頁面是我們新建的,MVC默認也只會在Views下面添加一個Student文件。
但是為什么我輸入School/Student/Index訪問不到呢,這是由於MVC在查找頁面的時候只會搜索
- Views/{1}/{0}.cshtml
- Views/Shared/{0}.cshtml
這種地址,所以我們這里直接輸入Student/Index就能夠訪問到我們的頁面了。

與此同時,我們在路由配置中修改一下Cotroller 和action的名稱 就能夠改變我們的默認起始頁。

但是很顯然,這不是我們想要的那種結果,因為我們對Controller按照文件夾的區別存放了,我們也希望把視圖通過我們的定的規則來存放。

比如是上面這樣。但是這樣一放,我們還能通過Student/Index來訪問到我們的頁面嗎?

答案是顯而易見的,改變了視圖結構后我們輸入Student/Index是訪問不到我們的頁面的。
這時要想訪問到Student/index頁面,就需要配置一些東西了。
這里就存在了兩個問題:
1.視圖結構改變后如何能訪問到頁面。
2.如何將Student/Index設置默認起始頁。
首先解決問題1.
1.
新建一個MyViewEngine類,繼承RazorViewEngine
2.
加入到global.asax文件中,
3.
新加一個路由。
這樣就就解決問題,然后通過School/Stundent/Index就可以訪問到頁面了。
第二個問題,右鍵項目設置為特定頁就可以了,目前只找到這種解決方式,后面如果有新的方法會補充上來。
