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

由上到下分别是

  • MVC 3 Layout Page:与原来Web Form的Master母版页一样。文件名一般以下划线“_”开头
  • MVC 3 Partial Page:用于定义用户控件的。文件名一般以下划线“_”开头。
  • MVC 3 View Page:普通的View页面。
  • MVC 3 View Page with Layout:使用某个Layout页面的View,与原本WebForm中使用母版页的页面一样。

上面两项文件的文件名默认是以下划线开头的“_”,不过在MVC 3中有几个带有下划线开头的文件比较特殊

  • _AppStart.cshtml
  • _PageStart.cshtml
  • _ViewStart.cshtml

  这几个文件在整个请求响应流程中发挥着一些特殊的效果。这些文件都不能够被请求(即使控制器的行为定义好了、路由也定义好了,都不行),但行为定义好的路由定义好而不能访问的页面也不知这几个,作为Layout的页面里万一用了@RenderBody()就不允许被请求了。当然感觉这样做钻牛角尖了。

分别看一下上面几个特殊的文件的介绍

_AppStart.cshtml

执行时机:在程序启动的时候执行,但晚于全局文件Global.asax里面的Application_Start事件执行。

作用:用于进行App的初始化时,需要进行处理的内容,但是由于其所处于的作用域跟Application_Start所处的不同。所以它能作出一些Application_Start做不出的事。

注意:此文件一定要位于根目录才会生效,否则不会执行。

这里就列举一下

_AppStart.cshtml

@{this.App.StartMessage = "测试_AppStart.cshtml";
}
<br />@("applicationstart")

TestPage.cshtml

@{ViewBag.Title = "123ABCD";if(!string.IsNullOrEmpty( App.StartMessage)){    Response.Write(App.StartMessage);}}

这里的App属于动态属性,VS的自动提示不起作用,要想知道是什么就只能上官网了,ViewBag都是这样。

同时从结果都可以看出@("applicationstart")并没有执行,只是执行了@{}这部分。

_ViewStart.cshtml

执行时机:单个View处理Request时执行,晚于_AppStart.cshtml执行

作用:与Web Form中的Page_Load类似,不过Web Form的Page_Load只能作用于一个页面,这个_ViewStart.cshtml能作用于它所在的目录及子目录中所有视图。如果子目录中也有_ViewStart.cshtml的话,先从最顶级的执行,才逐级执行到子级里头。不过如果行为方法返回的不是View(),而是PartialView()的话,这个_ViewStart就不会执行了。

下面也给一个例子,多个_ViewStart一齐使用的

文件结构如下

外面的_viewStart.cshtml的代码只是一行就够了

<br/> @("ViewStart.cshtml")

System目录下的_viewStart.cshtml的代码也只有一行

<br/>@("SystemViewStart")

运行结果如下

_PageStart.cshtml

传闻这个是跟_ViewStart.cshtml一样效果

这个文件呢!我没法作介绍了,因为我用Visual Studio2010的,在这个环境下建了文件没有执行,一直在苦恼中,在谷歌上找,有不少说明的,都说_AppStart.cshtml执行完毕之后就会执行_PageStart.cshtml,但无论怎样就是不执行,就算是按照别人的例子放置文件,粘别人的代码还是不行。后来看了一些鸡肠文章,好像_PageStart.cshtml不是在VS用的,在WebMatrix下面用的,看了一篇文章是说由WebMatrix转到VS的,那堆文件中,转换前是_PageStart.cshtml,转换后是_ViewStart.cshtml。

最后综合一下,如果_AppStart.cshtml,_PageStart.cshtml,_ViewStart.cshtml该在的都在的话,一个请求过来,服务器的处理如下

由于个人认识尚浅,故上面有什么说错的说漏的还请各位指出,谢谢!

转载于:https://www.cnblogs.com/HopeGi/archive/2013/05/31/3111513.html

MVC3中的视图文件相关推荐

  1. 爱上MVC3系列~分部视图中的POST

    在PartialView中进行表单提交,有什么用呢,我来总结一下: 1 这个表单不只一个地方用到 2 可能涉及到异步的提交问题 这两种情况都有可能需要把表单建立在"分部视图"中,我 ...

  2. html 页面视图中的资源文件(css/js/image)的路径问题。

    说到html 页面视图中的资源文件的路径引用问题,这个问题以前一直没去弄明白.今天,我将公司新开发的一个项目完全移植到我本地搭建的php 环境中来,遇到了这个问题,想了一下,然后也不是很困难的就把它给 ...

  3. laravel mysql视图,在 Laravel 视图文件中引入 bootstrap

    如何在 Laravel 视图文件中引入 bootstrap?对于从来没有接触过 PHP 开发框架的菜鸟来说,这确实是个问题. 在我们这些菜鸟传统的认知里,要在一个 html/php 文件里引入一个外部 ...

  4. Laravel中没有php artisan make:view怎么办?(可以基于Artisan View扩展包创建视图文件的方法解决!)

    本文实例讲述了Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法.分享给大家供大家参考,具体如下: 1.简介 本扩展包添加了两个视图相关的Artisan命令到Laravel ...

  5. vs2010中的ipch文件夹和sdf文件,及禁用后没有资源视图的解决方法

    vs2010中的ipch文件夹和sdf文件 vs2010打开某个工程 ,转换成功之后,在工程目录看见一个sdf文件和一个ipch文件夹,都超大(起码几十M),我一个四百多k 的工程,结果用vs打开过后 ...

  6. eclipse中自定义视图_如何在Windows中自定义文件夹视图设置

    eclipse中自定义视图 While the Windows File Explorer seems somewhat simplified compared to older versions, ...

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

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

  8. MVC3中_ViewStart.cshtml的一些事

    MVC3中,使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件. 很多人把这个文件当成类似Webform中的Master模板文件,其实这个_ViewStart.cshtm ...

  9. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

    索引: 目录索引 Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Ch ...

最新文章

  1. 掘金 php,PHP基本语法
  2. 安装虚拟机Ubuntu,搭建lnmp环境碰到的坑(三)
  3. 字符串匹配(KMP 算法 含代码)
  4. python链接mysql系统结构设计_第11章:使用Python打造MySQL专家系统
  5. vs2012安装过程 1006
  6. Linux虚拟化KVM-Qemu分析(一)
  7. C盘没W ndows64,win10如何深度清理c盘
  8. 如何使用Charles进行APP抓包
  9. 漏洞大爆光 QQ漏洞 飞秋漏洞 360浏览器劫持
  10. 关于浏览器被hao123劫持
  11. Visual Studio 程序集
  12. STC51系列单片机不断电自动下载程序
  13. mpirun mpd mpiexec
  14. 【DEBUG】2021-03-15 不定期的自我检讨001
  15. 社区版pyCharm安装Django
  16. linux vi全屏编辑器
  17. 一个不错的h5动画效果案例
  18. 智慧社区管理系统01(登录功能的实现)
  19. 视频框架 Vitamio 使用教程+部分心得 (三) 视频控制器MediaController + 部分中文API
  20. moto xt1085 Rom包半定制制作

热门文章

  1. object - c 函数的值
  2. 使用select一个表更新另一个表(批量更新)
  3. POJ1459-Power Network
  4. numcpp速度对比_PHP和C++性能对比.pdf
  5. tensorflow下载
  6. 死锁的产生、预防和避免
  7. 如果你是IT技术人员,请思考这15个问题
  8. Linux 命令简单介绍第一课笔记
  9. 甘特图 知乎_如何使用 Excel 绘制甘特图?
  10. linux使用gpio开一个线程,LINUX的gpio_request_one作用