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());
})
}
}
asp.net core 自定视图主题 实现IViewLocationExpander接口的更多相关文章
- ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 布局视图 上一章节中我们学习了如何使用 EF ...
- 移花接木:借助 IViewLocationExpander 更换 ASP.NET Core View Component 视图路径
端午节在家将一个 asp.net 项目向 asp.net core 迁移时遇到了一个问题,用 view component 取代 Html.RenderAction 之后,运行时 view compo ...
- [译]ASP.NET Core 2.0 视图引擎
问题 如何在ASP.NET Core 2.0中使用Razor引擎来创建视图? 答案 新建一个空项目,修改Startup.cs,添加MVC服务和请求中间件: public void ConfigureS ...
- [译]ASP.NET Core 2.0 视图组件
问题 如何在ASP.NET Core 2.0中使用视图组件? 答案 新建一个空项目,修改Startup类并添加MVC服务和中间件: public void ConfigureServices(ISer ...
- ASP.NET Core 入门教程 7、ASP.NET Core MVC 分部视图入门
一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...
- ASP.NET Core MVC 之视图(Views)
ASP.NET Core MVC 控制器可以使用视图返回格式化的结果. 1.什么是视图 在 MVC 中,视图封装了用户与应用交互呈现细节.视图是具有生成要发送到客户端内容的,包含嵌入代码的HTML模板 ...
- ASP.NET Core MVC 之视图组件(View Component)
1.视图组件介绍 视图组件是 ASP.NET Core MVC 的新特性,类似于局部视图,但它更强大.视图组件不使用模型绑定,并且仅依赖于调用它时所提供的数据. 视图组件特点: 呈块状,而不是整个响应 ...
- ASP.NET Core 入门笔记8,ASP.NET Core MVC 分部视图入门
一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...
- #asp.net core mvc 的视图注入
View injection is the most useful feature introduced in ASP.NET Core. 1.添加一个FruitsService public cla ...
随机推荐
- Python函数(二)-参数传递
位置参数 根据位置顺序来传递参数 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" def test(a,b): #a和b为形参 ...
- DAY12-前端之CSS
CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 ...
- DAY5-常用模块
一 time与datetime模块 二.random模块 三.os模块 四.sys模块 五 shutil模块 六 json&pickle模块 七 shelve模块 八 xml模块 九 conf ...
- 【273】利用ArcPy建立处理数据的脚本
这个脚本可以直接运行处理程序,首先在 ArcPy 上面测试,成功后写入文件,下面的代码实现将指定文件夹内部的栅格数据进行 Calculate Statistics 操作,否则在进行专题图制作的时候会出 ...
- solr replication原理探究
原文出自:http://sbp810050504.blog.51cto.com/2799422/1423199 无论是垂直搜索,还是通用搜索引擎,对外提供搜索服务其压力都比较大,经常有垂直电商在做活动 ...
- sql中的Alias怎么用
一直很奇怪,不知道为什么sql的Alias怎么用,上次看到ThinkPHP中的讲解,为什么数据库在用的时候有时候喜欢改个别名再用, 因为昨天去参加了公司的数据库开发工程师的笔试,今天就复习一下sql, ...
- Node.js的__dirname,__filename,process.cwd(),./的含义
简单说一下这几个路径的意思,: __dirname: 获得当前执行文件所在目录的完整目录名 __filename: 获得当前执行文件的带有完整绝对路径的文件名 process.cwd():获得当前执行 ...
- C++实现筛选法
筛选法 介绍: 筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法.据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274-194年)发明的,又称埃拉托斯特尼筛子. ...
- 51NOD 1616 最小集合
传送门 分析 不难发现集合中的数一定是集合内其它一堆数的$gcd$ 于是我们枚举$i$,统计原来集合中有几个数是$i$的倍数,设这个值为$f(i)$ 之后对于每个$i$如果不存在$f(x*i) = f ...
- Luogu 3586 [POI2015]LOG
考虑离散化后开权值线段树. 设序列中不小于$s$的数有$cnt$个,小于$s$的数的和为$sum$. 那么操作Z能成功的充要条件是$sum \geq (c - cnt) * s$. 如果序列中不小于$ ...