MVC3中的视图文件

  在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九章 魔法方法、特性和迭代器

第九章 魔法方法、特性和迭代器 构造函数 构造函数&#xff08;constructor&#xff09;&#xff0c;它其实就是初始化方法&#xff0c;只是命名为__init__。 构造函数不同于普通方法的地方在于&#xff0c;将在对象创建后自动调用它们。 在Python中&#xff0c;创建构造函数…

PHP 代码 加密

PHP 代码 加密 此加密方法支持任意PHP版 代码如下: <?php function RandAbc($length""){//返回随机字符串 $str"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; return str_shuffle($str); } $filenameindex.php; $T_k1RandAbc();//随…

Python字符串| join()方法与示例

join() is an in-built method in Python and it is used to join elements of the list, string etc with the given str separator. join()是Python中的一种内置方法&#xff0c;用于通过给定的str分隔符连接列表&#xff0c;字符串等元素。 Note: Method is called with th…

C语言 链表拼接 PTA,PTA实验 链表拼接 (20point(s))

本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下&#xff1a;struct ListNode {int data;struct ListNode *next;};函数接口定义&#xff1a;struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2是用户传入的两个按…

读书笔记_Effective_C++_条款十九:设计class犹如设计type

这里初看到”class”和”type”&#xff0c;感觉他们是说的是同一样东西&#xff0c;但仔细读了一下&#xff0c;两者在文中还是有区别的。class侧重于自定义的类&#xff0c;而type侧重于系统预定义的类&#xff08;像int、double、string、vector&#xff09;。设计好的class…

【TensorFlow学习笔记:神经网络优化(6讲)】

目录【1】NN复杂度【2】指数衰减学习率【3】激活函数优秀激活函数所具有的特点常见的激活函数对于初学者的建议【4】损失函数【5】缓解过拟合——正则化【6】参数优化器【1】SGD【2】SGDM(SGD基础上增加了一阶动量)【3】Adagrade(SGD基础上增加了二阶动量)【4】RMSProp(SGD基础…

kotlin 构造函数_Kotlin程序| 主要构造函数示例

kotlin 构造函数主要建设者 (Primary Constructor) A Kotlin class have Primary constructor and one or more Secondary constructor. Kotlin类具有Primary构造函数和一个或多个Secondary构造函数。 In Kotlin, Primary Constructor is the Part of Class Header. 在Kotlin中…

把SQL Server 错误日志导出为EXCEL 并发送到指定的ftp 或者 共享盘

把SQL Server 错误日志导出为EXCEL 并发送到指定的ftp 或者 共享盘 /* 2005版本 和2000 版本 sql server 错误日志结果不同。 下面是 适用于 SQL2000的 其中加入了 自己编写的一个ftp小程序 用来上传 相关日志状况*/IF object_id(tempdb..#error_log) IS NOT NULLD…

c语言软件幻化,python字符串处理

字符串字符串&#xff1a;不可变有序序列&#xff0c;在python可使用 "abc" , """abc""" ,abc 的形式表示&#xff0c;属于一种字面常量&#xff0c;python3中字符均属于Unicode编码。字符串可以被迭代&#xff0c;遍历&#xff0c;切…

第十章 开箱即用

第十章 开箱即用 “开箱即用”&#xff08;batteries included&#xff09;最初是由Frank Stajano提出的&#xff0c;指的是Python丰富的标准库。 模块 使用import将函数从外部模块导入到程序中。 import math math.sin(0)#结果为&#xff1a;0.0模块就是程序 在文件夹中创…

博客换肤

一直以来觉得博客园里的主题不是特别好&#xff0c;很多模版多多少少都有些美中不足&#xff0c;于是今天抽了点时间把主题改改&#xff0c;哈。幸亏博客园支持自定义样式。 时间有限就先改到这里&#xff0c;今后有时间在进一步完美&#xff0c;呵呵。转载于:https://www.cnbl…

duration java_Java Duration类| 带示例的get()方法

duration java持续时间类get()方法 (Duration Class get() method) get() method is available in java.time package. get()方法在java.time包中可用。 get() method is used to return the value for the given unit. get()方法用于返回给定单位的值。 get() method is a non…

Openmv通过串口接收数据、发送数据与stm32通信

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录 参考接线星瞳教程openmv传送数据STM32解码程序参考 接线 星瞳教程

c语言尹宝林答案,c程序设计导引 尹宝林

《C程序设计导引》特别适合作为计算机和非计算机专业学生学习高级语言程序设计的教材&#xff0c;也可供计算机等级考试者和其他各类学习者使用参考。17.40定价&#xff1a;44.75(3.89折)/2013-05-01《大学计算机优秀教材系列&#xff1a;C程序设计导引》是一本讲解C程序设计的…

从程序员到项目经理(15):项目管理三大目标

项目管理的三大目标即时间、成本和质量&#xff0c;实际是告诉项目经理应重点关注什么因素&#xff0c;项目控制应该做什么工作。三大目标虽然简单&#xff0c;但如果能将其真正贯彻到自己的行动中&#xff0c;那么对项目计划制定、过程控制等工作&#xff0c;均能起到引导作用…

第十一章 文件

第十一章 文件 打开文件 当前目录中有一个名为beyond.txt的文本文件&#xff0c;打开该文件 调用open时&#xff0c;原本可以不指定模式&#xff0c;因为其默认值就是’r’。 import io f open(beyond.txt)文件模式 值描述‘r’读取模式&#xff08;默认值&#xff09;‘w…

iterator与iterable

用Iterator模式实现遍历集合Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来&#xff0c;从而避免向客户端暴露集合的内部结构。例如&#xff0c;如果没有使用Iterator&#xff0c;遍历一个数组的方法是使用索引&#xff1a; for(i…

Android中的Touch事件处理流程

1、当触摸屏幕时&#xff0c;最先执行的是Activity中的 publicbooleandispatchTouchEvent (MotionEvent ev) {if(ev.getAction() MotionEvent. ACTION_DOWN) {onUserInteraction();}if(getWindow().superDispatchTouchEvent(ev)) {returntrue;}returnonTouchEvent(ev);}如果某…

【TensorFlow学习笔记:神经网络八股】(实现MNIST数据集手写数字识别分类以及FASHION数据集衣裤识别分类)

课程来源&#xff1a;人工智能实践:Tensorflow笔记2 文章目录前言一、搭建网络八股sequential1.函数介绍2.6步法实现鸢尾花分类二、搭建网络八股class1.创建自己的神经网络模板&#xff1a;2.调用自己创建的model对象三、MNIST数据集1.用sequential搭建网络实现手写数字识别2.用…

c语言 在执行区域没有空格,C语言上机操作指导之TurboC.doc

C语言上机操作指导之 -------- Turbo C程序设计是实践性很强的过程&#xff0c;任何程序都必须在计算机上运行&#xff0c;以检验程序的正确与否。因此在学习程序设计中&#xff0c;一定要重视上机实践环节&#xff0c;通过上机可以加深理解 C语言的有关概念&#xff0c;以巩固…