移除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文件删除后,就会爆下面这段错误

移除apsx视图引擎,及View文件夹下的web.config的作用_第1张图片

我们访问一个视图页面,例如/Home/Index的时候,视图引擎就会编译这个Index视图,当编译的时候会发现,找到了视图,它不知编译完的这个前端页面类的父类到底是谁


所以得出结论:View文件夹下面的web.config文件的作用是告诉视图引擎如何编译视图的前台页面类,以及制定当前页面类的父类为WebViewPage

这个web.config里面的配置不需要我们手动的更改任何东西,也不能删除


你可能感兴趣的:(移除apsx视图引擎,及View文件夹下的web.config的作用)