zoukankan      html  css  js  c++  java
  • ASP.NET MVC 自定义view engine


    1. 先看下webformviewengine的构造函数:
    public WebFormViewEngine()
    {
        
    base.MasterLocationFormats = new string[] { "~/Views/{1}/{0}.master""~/Views/Shared/{0}.master" };
        
    base.ViewLocationFormats = new string[] { "~/Views/{1}/{0}.aspx""~/Views/{1}/{0}.ascx""~/Views/Shared/{0}.aspx""~/Views/Shared/{0}.ascx" };
        
    base.PartialViewLocationFormats = base.ViewLocationFormats;
    }

    base.ViewLocationFormats 可以看出view page为什么只能写在views文件夹下的原因了。所以我们只需要在新的view engine的构造函数中修改下base.ViewLocationFormats 路径即可。

    2. 下面是一个自定义的View Engine -- SkinSupportViewEngine,它需要继承WebFormViewEngine。

        public class SkinSupportViewEngine : WebFormViewEngine
        {
            public SkinSupportViewEngine()
            {
                string[] mastersLocation = new[]
                                               {
                                                   string.Format("~/skins/{0}/{0}.master",
                                                                 Utils.SkinName)
                                               };
                MasterLocationFormats = this.AddNewLocationFormats(new List<string>(MasterLocationFormats),
                                                                   mastersLocation);

                string[] viewsLocation = new[]
                                             {
                                                 string.Format("~/skins/{0}/Views/{{1}}/{{0}}.aspx",
                                                               Utils.SkinName),
                                                 string.Format("~/skins/{0}/Views/{{1}}/{{0}}.ascx",
                                                               Utils.SkinName)
                                             };
                ViewLocationFormats =
                    PartialViewLocationFormats = this.AddNewLocationFormats(new List<string>(ViewLocationFormats),
                                                                            viewsLocation);
            }

    ......

    }

    3. 最后还需要在Global 文件中注册新的View Engine

                ViewEngines.Engines.Clear();
                ViewEngines.Engines.Add(new SkinSupportViewEngine());


  • 相关阅读:
    HTML5入门
    vue进阶:vuex(数据池)
    vue进阶:vue-router之导航守卫、路由元信息、路由懒加载
    vue进阶:vue-router(vue路由)的安装与基本使用
    vue进阶:vs code添加vue代码片段
    vue进阶:基于vue-cli创建项目(搭建手脚架)
    vue入门:(底层渲染实现render函数、实例生命周期)
    vue入门:(组件)
    webpack配置不同打包配置
    webpack开启本地服务器与热更新
  • 原文地址:https://www.cnblogs.com/rickie/p/2024375.html
Copyright © 2011-2022 走看看