MVC小系列(八)【改变Areas的FindView顺序】

摘要:
MVC小系列(VIII)[更改区域的FindView顺序]通常,如果项目很大,则将根据模块创建区域,这在结构上很清晰,有利于路线的部署。1区域有自己的_布局模板。如果希望所有区域使用公共(~/Views/Shared)下的模板,可以更改区域的FindView规则。当然,首先,您应该知道模板获取的顺序:如果这些地方的模板名称相同,则优先级为“~/Areas/{2}/Vi

MVC小系列(八)【改变Areas的FindView顺序】

一般项目比较大的话,会根据模块建立Areas,这样结构清晰,也有利于路由的部署,

1 Areas下有自己的_LayOut模板,而如果希望所有Areas都用公有的(~/Views/Shared)下的模板,可以改变Areas的FindView规则

当然首先这个取模板的顺序要知道:
如果这几个地方模板名称一样,则优先级是这样
"~/Areas/{2}/Views/{1}/{0}.cshtml";
"~/Areas/{2}/Views/shared/{0}.cshtml";
"~/Views/Shared/{0}.cshtml";

而如果要改变这样的顺序,可以通过ViewEngines类型下的Engines属性,它是一个ViewEngineCollection类型的集合,可以往里面放很多规则,它会以第一个为准,
而这些规则可以向路由规则一样在Global里进行注册

第一步:建立页面搜索引擎

1  //建立一个页面搜索引擎,按着自己希望的View定位顺序,默认情况下Areas区域的View查询时,先找自己的areas,然后找view/shared,可以改变它的顺序
2     public classCustomRazorViewEngine : RazorViewEngine
3 {
4         publicCustomRazorViewEngine()
5             : base()
6 {
7             base.AreaMasterLocationFormats = new string[] 
8 { 
9                  "~/Views/Shared/{0}.cshtml",
10                      "~/Areas/{2}/Views/{1}/{0}.cshtml", 
11                       "~/Areas/{2}/Views/Shared/{0}.cshtml", 
12 };
13               base.AreaViewLocationFormats = new string[] 
14 { 
15                     "~/Areas/{2}/Views/{1}/{0}.cshtml", 
16                      "~/Areas/{2}/Views/Shared/{0}.cshtml",
17                     "~/Views/Shared/{0}.cshtml"
18 };
19               base.AreaPartialViewLocationFormats = base.AreaViewLocationFormats;
20 }
21     }

第二步:在Global注册页面引擎

1   protected voidApplication_Start()
2 {
3 
4             #region 注册页面引擎
5 ViewEngines.Engines.Clear();
6             ViewEngines.Engines.Insert(0, newCustomRazorViewEngine());
7             #endregion
8             //AreaRegistration.RegisterAllAreas();
9 
10             //WebApiConfig.Register(GlobalConfiguration.Configuration);
11             //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
12             //RouteConfig.RegisterRoutes(RouteTable.Routes);
13             //BundleConfig.RegisterBundles(BundleTable.Bundles);
14             //AuthConfig.RegisterAuth();
15 
16            
17         }

这样后面页面的搜索会按这个引擎走下去

免责声明:文章转载自《MVC小系列(八)【改变Areas的FindView顺序】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql如何解除死锁状态计算机是怎样启动的?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

buildroot使用介绍【转】

整个Buildroot由Makefile脚本和Kconfig配置文件组成。就像编译Linux内核一样,您可以编译一个完整的Linux系统软件,该软件可以通过buildroot配置和menuconfig修改直接写入机器。使用buildroot构建基于qemu的虚拟开发平台。请参阅通过buildroot+qemu构建ARM Linux虚拟开发环境。工具链--˃配...

Mysql 查询以某个字符开头的语句

为了查询以某个字符开头的数据,MySQL中经常使用它。常见的语句如下:以查询文章标题以单词“positive”开头的语句为例:使用通配符:1SELECT*FROM`article`,其中title类似于“positive%”;使用左函数:使用字符串截断函数:1SELECT*FROM`article`其中substring(title,1,1)='positi...

Nohup后台运行程序

场景:我现在需要跑脚本批量处理一些数据,但是我又不想盯着控制台看这个脚本的输出结果,想把这些输出结果记录到一个日志文件里面方案:可以使用Linux的nohup命令,把进程挂起,后台执行用法:$nohupXXXXXX.sh˃˃/runtime/deletedata.log&运行结果(这个数字是进程号):˃˃[1]13120有时候可能会报一个提示:$no...

Win10阻止电脑关机时弹出正在关闭应用的方法及恢复

当计算机上安装了Windows 10时,当我们在未完成所有运行程序的情况下关闭计算机时,将弹出n个应用程序正在关闭并关闭的提示。第一步是创建一个自动关闭应用程序并将其添加到注册表的注册表文件。这可以解决在Windows 10系统计算机关闭时弹出提示关闭n个应用程序并关闭的问题。...

SkyWalking 服务端配置

在安装基于Docker的ElasticSearch时,在为什么需要链接跟踪一章中,我们介绍了几种SkyWalking存储解决方案。官方推荐的解决方案是ElasticSearch,因此我们需要首先安装Elastic搜索。...

[201020] Manjaro(KDE桌面环境)小白向完全安装教程(附Linux简要介绍)

不论如何夸赞Manjaro是一个使用体验十分舒适的操作系统,它作为Linux系统也不可避免地拥有目前Linux系统共有的缺点,或者说弱势。事实上,笔者在Manjaro上通常就是用虚拟机运行Office。这一点上,Arch及其家系具有反过来的优势。Arch系发行版在这一优点上甚至有加成:由于Arch庞大的软件源以及AUR的存在,你能简单地安装你能想到的几乎一切...