MVC3中,使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件。

很多人把这个文件当成类似Webform中的Master模板文件,其实这个_ViewStart.cshtml文件和模板文件没有任何关系,要说有关系,也仅仅是默认生成的时候,里面有一个语句

Layout = "~/Views/Shared/_Layout.cshtml";

其实这句话才是和模板有点关系的。

事实上,_Viewstart.cshtml的作用是在呈现View文件的时候的启动文件,无论哪个视图,当你要呈现这个视图的之前,_Viewstart.cshtml中的代码总会被先执行,正如把它的名字命名为_Viewstart哪样,这是Razor引擎故意设计的,因此如果项目中所有的视图都要包含某些公共逻辑,比如设置Layout = "~/Views/Shared/_Layout.cshtml";这样的语句,只需在_Viewstart.cshtml写一遍就可以了。

注意,是在View被呈现的时候才会调用_Viewstart.cshtml,如果一个View是按照PartialView的方式输出的,则不会触发_Viewstart.cshtml中的代码。

举个例子。

假设在_Viewstart.cshtml中有如下代码:

  1. @{
  2. Layout = "~/Views/Shared/_Layout.cshtml";
  3. @Html.Raw("Hello")
  4. }
  5. <div>World</div>

--------------------------------------

访问Home/ViewUserControl1调用的Action方法如下:

  1. public ActionResult ViewUserControl1()
  2. {
  3. return View();
  4. }

此方法返回ViewUserControl1视图。注意:当View方法参数为空的时候,默认是使用当前的action名字,即会去找ViewUserControl1.cshtml的View。

如果方法改为如下:

  1. public ActionResult ViewUserControl1()
  2. {
  3. return PartialView();
  4. }

则_Viewstart.cshtml中的代码不会被执行,因此写的Layout = "~/Views/Shared/_Layout.cshtml";之类的代码也不会被执行,返回的就是单纯的一个Partial View。

如果在View的Home目录下也有一个同名的_ViewStart.cshtml文件,那么这个_ViewStart也会被调用,但是会最先调用的还是最外面的_ViewStart,然后再是Home目录下的_ViewStart。

例如:Home目录下的_ViewStart.cshtml文件内容为:

  1. @{
  2. @Html.Raw("<b>_ViewStart.cshtml in home</b>");
  3. }

则当呈现ViewUserControl1得到的结果如下:

至于_ViewStart.cshtml为何前面要加'_'符号,可以参考文章http://cnn237111.blog.51cto.com/2359144/814704

MVC3中_ViewStart.cshtml的一些事相关推荐

  1. Asp.Net Core 中_ViewStart.cshtml 及_ViewImports.cshtml 的作用

    _ViewStart.cshtml在ASP.NET MVC就存在了,而ASP.NET Core MVC则多了一个_ViewImports.cshtml,这两个都会对View有全域性的影响,重新来了解一 ...

  2. MVC3中的视图文件

    在MVC3中的视图部分,Razor视图引擎是与以往不同的地方之一,使用Razor的视图文件再也不是以往的ASPX文件了,是cshtml文件,在新建视图的时候也会发现增加多了几类文件 由上到下分别是 M ...

  3. 基于jquery的上传插件Uploadify 3.1.1在MVC3中的使用

    Uploadify是JQuery的一个文件上传插件,实现的效果非常不错,目前已经更新到Version3.1.1,官方提供的实例是php版本的,本文将介绍Uploadify在MVC3中的使用,您可以点击 ...

  4. ASP.NET MVC教程八:_ViewStart.cshtml

    一.引言 _ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出现的,用Razor模板引擎新建项目后,Views目录下面会出现一个这样的文件: 打开_ViewStart. ...

  5. MVC中的cshtml与ASPX的区别

    在MVC3中,即可以使用cshtml,也可以使用aspx, 这两者到底有什么区别呢? 越详细越好,如果是用来正式开发,用哪种比较好. --------------------------------- ...

  6. C# MVC引用_ViewStart.cshtml,新页面如何清空Layout模板

    新建MVC的项目时会自动创建_ViewStart.cshtml._Layout.cshtml页面,这样我们就把公共的部分放到_Layout页面中,每次新建页面时都会自动加载_ViewStart. _V ...

  7. _ViewStart.cshtml介绍

    介绍 MVC中执行任何一个视图之前都要先执行Views文件夹下的 _ViewStart.cshtml 视图的内容 Controller中方法必须以return View()来返回视图才先执行_View ...

  8. 前端开发中的性能那点事

     前端开发中的性能那点事(一)巧用xdebug 前言: 在我们平时的php开发中,一个大的项目经过长时间的积累以后你会发现性能越来越慢,而性能到底消耗在了什么地方,常常是一个令人头疼的问题,funct ...

  9. NET MVC3 中的枚举多语言实现,DescriptionPairAttribute

    以下是在实际项目中遇到的问题,项目架构:MSSQL2008.NET4.0.MVC3.XSLT视图引擎. 项目需求:要实现多语言站点. 视图引擎使用了弱类型的XSLT引擎: 多国语解决方案:多个XML语 ...

最新文章

  1. Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决...
  2. Android ViewModel+liveData+lifecycle+databinding打造MVVM
  3. [BUUCTF-pwn]——ciscn_2019_s_3
  4. 网上预约挂号系统代码_速看!全国民族运动会部分竞赛项目观众网上预约系统正式上线了...
  5. git工作区和缓存区概念理解
  6. r语言 小树转化百分数_“小树”机器人1.0新品发布会
  7. idea 调用c#接口_Dubbo 接口测试方法
  8. Pika在360的应用与实践
  9. (20120731)Android中的各种对话框总结(dialog)
  10. 7.25 Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
  11. VS2005发送电子邮件(转)
  12. 设计模式解密(9)- 装饰者模式
  13. pandas—pandas.DataFrame.iterrows的使用
  14. Delphi开发Web的MVC框架
  15. linux ubuntu因为没有正常关机,导致开机出现gun grub
  16. ARM架构(RISC)和x86架构(CISC)以及传统与移动CPU/GPU厂商
  17. 苹果服务器维护2017.12,2017年12月28日维护公告
  18. android 浏览器隐藏地址,移动端隐藏手机浏览器的地址栏一下底部的菜单栏
  19. FOne easyModelVerifier™ 模型/代码Back-to-Back自动化验证工具
  20. 一个小灯泡带我了解放大电路

热门文章

  1. 计算机培训教学准备,计算机教学计划锦集五篇
  2. HighwayNet网络详解及复现
  3. mysql算gps距离_mysql JS 计算两GPS坐标的距离函数:
  4. 什么是两化融合和数字化转型?
  5. 视听说教程(第三版)4 quiz 8
  6. 解决OpenCV捕捉USB摄像头时抓帧失败的问题
  7. 亚马逊鲲鹏系统详细功能介绍
  8. ubuntu18.04 安装惠普打印机驱动GUI界面
  9. 解析Activity中的onCreate方法
  10. vc++之oncreate