Razor / MVC - _ViewStart.cshtml

创建时间:
2014-07-04 22:22
最近更新:
2018-09-17 11:36

Brief

在 MVC3 及更高版本中使用 Razor 模板引擎,会自动生成一个 _ViewStart.cshtml 文件。

任何视图被执行之前,该文件中的代码总会被先执行。但是当视图以 PartialView (分部视图) 的形式被执行时不会触发该文件中的代码。

MvmProject/Views/ 下的任何层级的目录中都可以有一个该文件,如果存在多个,它们将以从外至内的次序依次执行。

该文件中遵循标准的 Razor 语法。

该文件主要用于一些不方便或不能在布局页 (_Layout.cshtml) 中进行的统一操作,譬如你有很多个没有继承关系的母版或不使用母版的单页。

除了已经提供的默认功能以外,还可以自己定义一个类,例如 MyViewStart,用 System.Web.Mvc.ViewStartPage 作为基类,并在 _ViewStart.cshtml 中引用 MyViewStart 就行 (文件第一行加入:@inherits MyNamespace.MyViewStart)。

如果自定义 ViewEngine,在 RazorView 的构造函数中会有一个 runViewStartPages 的参数,如果为 false,可以跳过 ViewStartPage,如果为 true 则执行。

测试记录

~/Views/_ViewStart.cshtmlarea 无效,原理很明显,它仅作用于所在 Views 及其子目录。因此,Areas 中需要另行添加 _ViewStart.cshtml 文件。