今天Home视图中新增了一个视图,因为不需要设置Layout就没与管他,但是运行起来一看,自动引用了布局,分析了半天 也没看出是哪的错误?
后来尝试着在area中增加了一个同样的视图就没有问题,比较这两个文件夹后发现,Home所在的views文件夹下多了一个_viewstart.cshtml,
打开一看,里面就只有一句代码,如下:
Layout = "~/Views/Shared/_Layout.cshtml";
好吧,瞬间明白了!
从网上查了查,了解到这个_viewstart.cshtml是在呈现view时运行的,可以理解为,在加载view之前先运行这个,这个里面设置了layout,所以我的页面中就引用了布局。
问题找到了,解决办法也很简单,在我新增的页面中设置layout=null,如下
Layout = null;
多出了上面红色划线的部分
该部分的内容来自 _viewStart.cshtml
把该文件名称修改为 _ViewStart1.cshtml
显示结果:
原因:
如上面的分析:
(自动加载?)
了解到这个_viewstart.cshtml是在呈现view时运行的,可以理解为,在加载view之前先运行这个,这个里面设置了layout,所以我的页面中就引用了布局。
个人感觉奇怪的地方:
页面中引用了 _TestLayout.cshtml
但并没有引用 _ViewStart.cshtml
按照前面作者的介绍 ,在ViewStart 中引用了 Layout.cshtml
页面在加载 Views之前 会自动 加载 ViewStart 所以会出现这个结果。
把viewStart 改为 ViewStart1 后,页面的自动加载则不能生效。
https://www.cnblogs.com/dansediao/p/5882024.html MVC中的_viewstart.cshtml(没有设置Layout却引用了布局) 今天Home视图中新增了一个视图,因为不需要设置Layout就没与管他,但是运行起来一看,自动引用了布局,分析了半天 也没看出是哪的错误?后来尝试着在a
1、新建MasterFilterAttribute类继承ActionFilterAttribute,重写方法OnActionExecuted
,指定ViewResult的MasterName = "Master";
using System;
using System.Collections.Generic;
using System.Linq;
using System...
新建
MVC
的项目时会自动创建_
ViewS
tar
t.
csh
tml
、_
Layout
.
csh
tml
页面,这样我们就把公共的部分放到_
Layout
页面
中
,每次新建页面时都会自动加载_
ViewS
tar
t。
_
ViewS
tar
t.
csh
tml
页面代码:
Layout
= "~/
Views
/Shared/_
Layout
.
csh
tml
";
有时候我们自定义错误页面,可能不是h
tml
静态
MVC
中
_
ViewS
tar
t.
csh
tml
布局
文件
_
ViewS
tar
t.
csh
tml
文件的作用:一般是用于存放
MVC
网站
中
所有视图公用的js,css等文件。这样就不需要在每个视图
中
都拖一个js,css等文件进来了
*
MVC
中
执行任何一个视图之前都要先执行
Views
文件夹下的 _
ViewS
tar
t.
csh
tml
视图的内容
* 注意点:想要上面的描述成立,则在action方法
中
必须以ret...
本文导读:在
MVC
3及更高版本
中
,使用Razor模板引擎的话,会自动生成一个_
ViewS
tar
t.
csh
tml
文件。事实上,_
Views
tar
t.
csh
tml
的作用是在呈现View文件的时候的启动文件,无论哪个视图,当你要呈现这个视图之前,_
Views
tar
t.
csh
tml
中
的代码总会被先执行。
在ASP.NET
MVC
3.0
ViewS
tar
t.
csh
tml
视图页面
MVC
中
执行任何一个视图之前都要先执行
Views
文件夹下的 _
ViewS
tar
t.
csh
tml
视图的内容
注意点:想要上面的描述成立,则在action方法
中
必须以return View()来返回视图。
如果是以PowerView() 方法来返回视图的话,则不会执行_
ViewS
tar
t.
csh
tml
中
的内容
public cla
ViewS
tar
t
在前面的例子
中
,每一个视图都是使用
Layout
属性来指定它的
布局
。如果多个视图使用同一个
布局
,就会产生冗余,并且很难维护。
_
ViewS
tar
t.
csh
tml
页面可用来消除这种冗余。这个文件
中
的代码先于同目录下任何视图代码的执行。这个文件也可以递归地应用到子目录下的任何视图。
当创建一个默认的ASP.NET
MVC
项目时,您将会注意到在
Views
目录下会自动添加一个_V...
如果直接将_
ViewS
tar
t.
csh
tml
文件加入到areas下,运行areas页面将会报错:
无法将类型为“ASP._Page_Areas_Admin__
ViewS
tar
t_
csh
tml
”的对象强制转换为类型“System.Web.WebPages.S
tar
tPage”。
解决方法:将
Views
下的web.config拷贝一份到areas下,重新编译即可
MVC
3
中
,使用Razor模板引擎的话,会自动生成一个_
ViewS
tar
t.
csh
tml
文件。
很多人把这个文件当成类似Webform
中
的Master模板文件,其实这个_
ViewS
tar
t.
csh
tml
文件和模板文件
没有
任何关系,要说有关系,也仅仅是默认生成的时候,里面有一个语句
Layout
= "~/
Views
/Shared/_
Layout
.
csh
tml
";
其实这句话才是和模板有点关系...
在
MVC
项目
中
会自动生成_
ViewS
tar
t.
csh
tml
文件,作用是,任何
csh
tml
文件打开都会调用他(Partical
csh
tml
除外),所以可以在这里写一些公用的代码,或者调用模板,减少重复的代码,例如 导入网页开头部分,引入js和css部分。
相当于母版页,但是功能更高级,可以写cs代码。
作为一个刚刚开始学习
Mvc
的新人来说,从之前的winform页面到现在
MVC
的转变,感觉这是华丽丽的转身啊,再
没有
拖拽控件,转而是一种规范的格式,用Model-View-Controller三者把一个系统的构成完美呈现,你可以选择用其自带的模版来完成系统的开发,很强大,很方便。
但是对于现在越来越需要关注度的时代来说,漂亮的页面必不可少,你当然可以自己用h
tml
来完成页面的设计,但是,
MVC
提