標籤:ati soft register 設定檔 sdn 泛型類 add 檔案中 .com
<>
使用Rezor視圖引擎的時候移除apsx視圖引擎
Global.asax檔案
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http;using System.Web.Mvc;using System.Web.Routing;namespace MvcApp{ // 注意: 有關啟用 IIS6 或 IIS7 傳統模式的說明。 // 請訪問 http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); //尋常我們一般用Razor視圖引擎,所以就沒有必要要MVC再去尋找aspx視圖引擎。所以能夠將aspx視圖引擎移除掉。這樣每次載入視圖的時候就會快一點(由於每次載入視圖的時候都去尋找aspx視圖引擎是要耗效能的。我們能夠建立一個Home控制器,不給它建立Index視圖,當我們訪問/Home/Index的時候,就會提示找不到視圖,我們能夠看到MVC去尋找了aspx和Razor視圖後。沒有找到。就會報找不到視圖的錯誤) //為什麼要把移除視圖引擎的代碼寫在這個Global.asax檔案裡呢?那是由於網站啟動,我就先將它移除。 //移除aspx視圖引擎 //ViewEngines.Engines.RemoveAt(0); //這個是一次Razor視圖引擎 //ViewEngines.Engines.RemoveAt(1); } }}
在MVC項目中,我們發現有view視圖裡面也有一個web.config設定檔,那麼這個設定檔是幹什麼的呢?
我們看到的視圖。本質上就是一個前端類,它會在我們的視圖引擎第一次找到它的時候將它編譯成一個前端頁面類,編譯完後。就須要將這個前端頁面類繼承一個webViewPage<TModel>的泛型類,或者WebViewPage類 (注:WebViewPage類是webViewPage<TModel>類的父類)
(看了以下的代碼後。我們就會發現視圖編譯完後產生的前端頁面類的父類就是在View目錄以下的這個web.config檔案中指定的)
我們開啟這個web.config檔案就能夠看到裡面就有這麼一段
<pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages>
假設我們將這個View目錄中的web.config檔案刪除後,就會爆以下這段錯誤
我們訪問一個視圖頁面。比如/Home/Index的時候。視圖引擎就會編譯這個Index視圖。當編譯的時候會發現,找到了視圖,它不知編譯完的這個前端頁面類的父類究竟是誰
所以得出結論:View目錄以下的web.config檔案的作用是告訴視圖引擎怎樣編譯視圖的前台頁面類。以及制定當前頁面類的父類為WebViewPage
這個web.config裡面的配置不須要我們手動的更改不論什麼東西,也不能刪除
移除apsx視圖引擎,及View目錄下的web.config的作用