📘 第5章:ASP.NET Web Pages – 全局页面(Global Pages)
🌐 什么是全局页面?
在 ASP.NET Web Pages 中,全局页面是特殊的 .cshtml
文件,它们在网站运行时自动执行,用于在页面加载前设置网站的通用行为。主要包括:
文件名 | 执行时机 | 用途 |
---|---|---|
_AppStart.cshtml | 应用首次运行时 | 设置全局变量、配置、初始化数据库连接等 |
_PageStart.cshtml | 每次页面执行之前 | 设置 Layout、页面初始化等 |
🧭 _AppStart.cshtml
:全站初始化配置
🔧 用途
- 运行一次,仅在应用启动时调用
- 设置站点级设置,如连接字符串、通用设置等
📄 示例
_AppStart.cshtml
@{
// 定义全局变量
WebSecurity.InitializeDatabaseConnection(
connectionStringName: "DefaultConnection",
userTableName: "Users",
userIdColumn: "UserId",
userNameColumn: "UserName",
autoCreateTables: true
);
}
- 你可以用它初始化数据库、安全模块或自定义逻辑。
🧭 _PageStart.cshtml
:页面级初始化设置
🔧 用途
- 每个页面执行前自动运行
- 通常用于设置页面默认 Layout、页眉或变量等
📄 示例
_PageStart.cshtml
@{
Layout = "_Layout.cshtml";
}
- 所有子页面默认使用该 Layout,除非在页面中重新设置。
📁 文件位置说明
- 放在页面所在的文件夹中,每个文件夹可以有一个
_PageStart.cshtml
。 - 子页面优先读取自身目录下的
_PageStart.cshtml
,如果没有则向上查找。
⚙️ 执行流程(执行顺序)
页面执行前的调用顺序如下:
_AppStart.cshtml
(仅首次运行时)_PageStart.cshtml
(每次请求)- 目标页面自身的 Razor 代码
🧪 示例结构演示
/Site
|_ _AppStart.cshtml
|_ _PageStart.cshtml # 设置全站 Layout
|_ /Pages
|_ _PageStart.cshtml # 设置子布局
|_ Index.cshtml
|_ Contact.cshtml
/Pages/_PageStart.cshtml
将只影响该目录内的页面。- 根目录的
_PageStart.cshtml
用于设置全局默认 Layout。
🛑 注意事项
- 文件名必须以 下划线开头:
_AppStart.cshtml
和_PageStart.cshtml
- 不能通过 URL 直接访问这两个页面(类似 App_Code)
- 可使用条件逻辑决定是否应用 Layout
@{
if (!Request.Url.AbsolutePath.Contains("Login")) {
Layout = "_Layout.cshtml";
}
}
🌐 出站链接推荐
📚 参考资料
- Microsoft Learn – Global Files in ASP.NET Web Pages
- 《ASP.NET Web Pages Unleashed》— 全局架构章节
- Stack Overflow –
_AppStart.cshtml
&_PageStart.cshtml
使用方法讨论
发表回复