六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 187|回复: 0

爱上MVC3系列~改变Areas的FindView顺序

[复制链接]

升级  44.3%

618

主题

618

主题

618

主题

探花

Rank: 6Rank: 6

积分
1886
 楼主| 发表于 2012-10-24 02:13:51 | 显示全部楼层 |阅读模式
我们在开发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
          ...
         }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表