博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爱上MVC3系列~改变Areas的FindView顺序
阅读量:7041 次
发布时间:2019-06-28

本文共 1858 字,大约阅读时间需要 6 分钟。

我们在开发MVC项目时,由于项目比较大,往往会根据模块去建立Areas,这样不仅可以使程序的结构清晰,而且也有利于进行路由的部属。而在进行Areas的开发时,我们往往会有这样的情况:

1 Areas下有自己的_Layout模板,而我们希望所有Areas都用公用的(~/views/shared)下的模板,这样我们应该怎么做呢?

两个模版的名称是一样的,在MVC中它会优先使用那个呢?

这是我们所关注的问题,经过测试表明,在默认情况下,MVC会使用自己Areas里定义的模板,而不会使用View/Shares目录的,这很正常,因为它的优先级肯定是以离它最近的那个模板为主。

总结 views的查询顺应是:

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

protected void Application_Start()        {            #region 注册页面引擎            ViewEngines.Engines.Clear();//清空所有FindView規則            ViewEngines.Engines.Insert(0, new CustomRazorViewEngine());            #endregion           ...          }
1  ///  2         /// 建立一个页面搜索引擎,针对Razor 3         /// 按著自己希望的VIEW定位順序去訂定,默認情況下areas区域的view查询时,先找自己的areas,然后找view/shared, 4         /// 我们可以改变它的顺序 5         ///  6         private class CustomRazorViewEngine : RazorViewEngine 7         { 8             public CustomRazorViewEngine() 9                 : base()10             {11                 base.AreaMasterLocationFormats = new string[]12                 {13                       "~/Views/Shared/{0}.cshtml",14                     "~/Areas/{2}/Views/{1}/{0}.cshtml", 15                      "~/Areas/{2}/Views/Shared/{0}.cshtml", 16                    17                  };18 19                 base.AreaViewLocationFormats = new string[] 20                 { 21                     "~/Areas/{2}/Views/{1}/{0}.cshtml", 22                      "~/Areas/{2}/Views/Shared/{0}.cshtml",23                     "~/Views/Shared/{0}.cshtml"24                 };25 26                 base.AreaPartialViewLocationFormats = base.AreaViewLocationFormats;27             }28         }

OK,我们可以看到,我们把"~/Views/Shared/{0}.cshtml"这个规则放到上第1个位置,这时,它会被优先使用。

看来,回头应该把global里的用法写个文章了,呵呵。

 

 

 

转载于:https://www.cnblogs.com/lori/archive/2012/09/20/2694957.html

你可能感兴趣的文章
源码编译安装PHP7
查看>>
Windows7首次使用XenApp初始化操作手册
查看>>
ubuntu15.04安装vm11
查看>>
设计模式——状态模式(State Pattern)
查看>>
Linux下的tar命令
查看>>
cisco路由器综合实验之二 访问控制列表的应用(ACL)
查看>>
Android中146种颜色对应的xml色值
查看>>
dokcer基础命令-详解
查看>>
rust语言初体验
查看>>
Android呈现的图片大小和图片分辨率不符的原因
查看>>
表单验证js代码
查看>>
redis集群搭建
查看>>
MongoDB分片搭建
查看>>
TurboMail为企业选择邮件服务器支招
查看>>
TurboMail邮件服务器为您解疑为何收发邮件不畅通
查看>>
给想立志入行网络或已经初入行的朋友的建议
查看>>
Flink 原理与实现:Window 机制
查看>>
第一讲 scala开发环境搭建
查看>>
MySQL簇的安装及配置
查看>>
screen命令的用法
查看>>