https://www.cnblogs.com/dansediao/p/5882024.html
今天Home视图中新增了一个视图,因为不需要设置Layout就没与管他,但是运行起来一看,自动引用了布局,分析了半天 也没看出是哪的错误?
后来尝试着在area中增加了一个同样的视图就没有问题,比较这两个文件夹后发现,Home所在的views文件夹下多了一个_viewstart.cshtml,
打开一看,里面就只有一句代码,如下:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
好吧,瞬间明白了!
从网上查了查,了解到这个_viewstart.cshtml是在呈现view时运行的,可以理解为,在加载view之前先运行这个,这个里面设置了layout,所以我的页面中就引用了布局。
问题找到了,解决办法也很简单,在我新增的页面中设置layout=null,如下
@{
Layout = null;
}
Test.cshtml 代码

_TestLayout.cshtml

显示结果:

多出了上面红色划线的部分
该部分的内容来自 _viewStart.cshtml

把该文件名称修改为 _ViewStart1.cshtml
显示结果:

原因:
如上面的分析:
(自动加载?)
了解到这个_viewstart.cshtml是在呈现view时运行的,可以理解为,在加载view之前先运行这个,这个里面设置了layout,所以我的页面中就引用了布局。
个人感觉奇怪的地方:
页面中引用了 _TestLayout.cshtml
但并没有引用 _ViewStart.cshtml
按照前面作者的介绍 ,在ViewStart 中引用了 Layout.cshtml
页面在加载 Views之前 会自动 加载 ViewStart 所以会出现这个结果。
把viewStart 改为 ViewStart1 后,页面的自动加载则不能生效。

本文探讨了MVC框架中_viewstart.cshtml的作用,解释了即使未在视图中显式设置Layout,页面仍能自动应用布局的原因。通过对比不同视图文件夹的行为,揭示了_viewstart.cshtml如何在视图渲染前设置默认布局。
&spm=1001.2101.3001.5002&articleId=107024692&d=1&t=3&u=60152db730fa4e4a98ffae83e22bb295)
501

被折叠的 条评论
为什么被折叠?



