2018-05-25  1,187 views 1

ASP.NET MVC Areas的视图View统一使用外层的Layout布局(模板)

 标签:          

实际需求:开发的系统越来越复杂,若不划分Areas会很臃肿,但是创建的Areas内的View希望共享使用 根目录下(即外层主目录)的_Layout.cshtml 的布局,我想很多人会有这个需求,当然肯定也有人会说微软提供Area就是相当于区分出多个系统了,为什么要用一个布局呢?那我只想说需求问题吧,还有个人因素 哈哈,欢迎杠精来辩。

只要简单3个步骤即可:

1、首先观察下Area的目录结构,每一个Area都相当于是一个MVC应用程序,有Controller、Models、Views,每个Area根目录下都有Web.config

解决关键之一就在Web.config,首先要把每一个Area下的Web.config复制到 Areas 根目录下,所有Area下的Web.config内容都是一样的(默认生成的状态下),所以

只要保留一个就行了,其他都删除,如图2。

图1

图2

2、第二步,复制一份外层项目的_ViewStart.cshtml 到Areas根目录下,操作方法如图3,操作后效果如图4。

图3

 

图4

2、第三步,创建需要View

注意,创建View的时候会在Shared下生成一个_Layout.cshtml文件,Area根目录下生成一个_ViewStart.cshtml 文件,重点来了,如果不删除Area下的_ViewStart.cshtml  那么访问当前Area下的视图时仍然会加载当前Area下_ViewStart.cshtml 指定的布局,所以一定要删掉,Shared下的布局文件就没啥意义了,反正也是自动生成的,所以可以Cut掉  碍眼。

图5

然后运行一下,效果就出来啦,如图6所示。

图6

 

MVC 运行加载模板引擎首先会访问到当前的视图(View),查看当前的View中是否定义了Layout,如果没有会找到_ViewStart.cshtml,Areas下面则找到对应Area下_ViewStart.cshtml,所以如果要修改默认加载的布局页,可以修改_ViewStart.cshtml中的内容。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

 

1 条留言  访客:1 条  博主:0 条

  1. 暴漫小王子

    :mrgreen: 可以可以

给我留言

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: