之前有很多人問我 ASP.NET MVC 到底可不可以在 Visual Studio 的網站專案(WebSite Project)模式下運作,也就是在 ASP.NET 動態編譯的架構下運行 ASP.NET MVC,事實上是沒問題且非常容易的,唯一的缺點就是會失去 Visual Studio 開發工具的有效支援,例如 Add Controller 或 Add View 等等的工作可能會變的沒辦法自動化等等。
1. 我們先在一個方案中建立一個基本的「網站專案」( WebSite Project ) 與一個 ASP.NET MVC 專案
2. 修改如上圖 WebSite2 專案的 web.config 讓專案本身能支援 ASP.NET MVC 所需的設定
( 如下圖的這些宣告都可以從 MvcApplication1 專案取得 )
調整 <system.web> / <compilation> / <assemblies> 載入與 ASP.NET MVC 相關的組件
調整 <system.web> / <pages> 下,新增 <namespaces> 宣告
【可參考:ASP.NET 如何預設匯入指定的命名空間(Namespace) 】
調整 <system.web> / <httpHandlers> 與 <httpModules> 下,新增以下宣告
如果你的網站會安裝到 IIS7 上面執行,那你也要修改 <system.webServer> 的設定
3. 在網站專案新增 Global.asax 檔案,並將 MvcApplication2 中的 Routing 相關程式碼複製進來
4. 將 Views, Scripts, Content 目錄移至 WebSite2 專案下,將 Controllers 目錄移至 App_Code 目錄下
5. 如果你希望讓首頁 ( http://localhost/ ) 也能執行 ASP.NET MVC 的話,那你也可以將 Default.aspx 也移至 WebSite2 專案,但有些地方要調整過才能符合 WebSite 專案的要求。
以上五個步驟完成後,ASP.NET MVC 就可以順利在 WebSite 專案的模式下運作,而且可以享用動態編譯的特性,你隨時可以修改 App_Code\Controllers 下的程式碼,而且立即生效!
備註:如果你要將此網站安裝在 IIS6 上,請記得要設定「萬用字元應用程式對應」,如下圖示: