移除apsx视图引擎,及View目录下的web.config的作用
<>
使用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里面的配置不须要我们手动的更改不论什么东西,也不能删除