【发布时间】:2014-07-04 15:19:04
【问题描述】:
我有一个 _SiteLayout.cshtml 文件,该文件构建了网站并包含一些 C# 代码。如何将 _SiteLayout 的 C# 代码发送到其所有子页面?我正在使用 WebPages Razor 2。
提前谢谢你。
【问题讨论】:
标签: razor razor-2 asp.net-webpages
我有一个 _SiteLayout.cshtml 文件,该文件构建了网站并包含一些 C# 代码。如何将 _SiteLayout 的 C# 代码发送到其所有子页面?我正在使用 WebPages Razor 2。
提前谢谢你。
【问题讨论】:
标签: razor razor-2 asp.net-webpages
有两种实现布局页面的方法:
Layout 命令,如Creating a Consistent Layout in ASP.NET Web Pages (Razor) Sites 中所述
_PageStart.cshtml 文件(Customizing Site-Wide Behavior for ASP.NET Web Pages (Razor) Sites) 为单个文件夹中的所有文件初始化相同的布局页面。在后一种情况下,您可以在代码部分使用 Layout = null 禁用单个页面的布局页面。
编辑
如果要将数据从母版页传递到部分页面,则必须使用 RenderPage() 方法而不是 RenderBody() 方法,但您的网站结构会完全改变。
例如,如果您想创建一个从表中提取数据并将它们传递到可以更改的部分页面的母版页,您的母版页可能类似于:
@{
var db = Database.Open("Northwind");
var data = db.Query(@"SELECT [Product Id], [Product Name],
[English Name] FROM Products ");
var page = "Partial.cshtml";
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
@RenderPage(page, new {gridData = data})
</body>
</html>
Partial.cshtml 中的代码从 Page.gridData 变量中获取数据并将它们显示在 WebGrid 中:
@{
var grid = new WebGrid(Page.gridData);
}
<div>@grid.GetHtml()</div>
【讨论】: