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());


  • 相关阅读:
    String、Stringbuilder、StringBuffer之间的练习与区别
    JAVA——重点非阻塞模型:NIO模型及IO操作步骤
    JAVA——IO模型分类
    SpringBoot(六) SpringBoot使用汇总(持续更新)
    Java高级(一) Future机制
    SpringBoot(二) 事务
    Java8(七) 新的DateTime API
    Java8(六) Optional
    Java8(五) 接口默认方法
    Java8(四) StreamAPI
  • 原文地址:https://www.cnblogs.com/rickie/p/2024375.html
Copyright © 2011-2022 走看看