• asp.net core 自定视图主题 实现IViewLocationExpander接口


    新建ThemeViewLocationExpander.cs 实现IViewLocationExpander接口

     /// <summary>
        /// 自定视图主题 实现IViewLocationExpander接口
        /// </summary>
        public class ThemeViewLocationExpander : IViewLocationExpander
        {
            public ThemeViewLocationExpander()
            {
            }
            /// <summary>
            /// 主题名称
            /// /Views/+ViewLocationExpanders
            /// </summary>
            public string ThemeName { get; set; } = "Default";
    
            public void PopulateValues([FromServices]ViewLocationExpanderContext context)
            {
                HttpContext httpcontext = context.ActionContext.HttpContext;
                string theme = httpcontext.Request.GetTheme();
                if (theme.IsNotNullOrEmpty())
                {
                    ThemeName = theme;
                }
                context.Values["theme"] = ThemeName;
            }
    
            /// <summary>
            /// 主题切换
            /// </summary>
            /// <param name="theme"></param>
            /// <returns></returns>
            public virtual IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context,
                                                                   IEnumerable<string> viewLocations)
            {
                string n = string.Empty;
                foreach (string item in viewLocations)
                {
                    n = item.ToLower();
                    if (!n.Contains("/shared"))
                    {
                        n = n.Replace("{1}", $"theme/{context.Values["theme"]}/{{1}}");
                    }
                    yield return n;
                }
    
            }
        }

     添加新的ViewLocationExpanders

     public class Startup{
      public virtual void ConfigureServices(IServiceCollection services)
            {
    services.AddMvc().AddRazorOptions(option =>
        {
            option.ViewLocationExpanders.Clear();
            option.ViewLocationExpanders.Add(new ThemeViewLocationExpander());
        })
        }
    }
    

      

     

  • 相关阅读:
    struts2 文件上传
    struts2 前端显示错误信息
    struts2
    struts2 针对类型转换出错的处理
    Beats:使用filebeat传送多行日志multiline
    logstash的output插件
    logstash的mutate插件
    logstash中date的时间处理方式总结
    logstash更新gem源
    logstash的Multiline插件
  • 原文地址:https://www.cnblogs.com/SpeakHero/p/9634172.html
Copyright © 2020-2023  润新知