布局页面的代码未发送到内容页面

时间:2014-07-04 15:19:05

标签: razor razor-2 asp.net-webpages

我有一个_SiteLayout.cshtml文件,用于构建网站并在其上有一些C#代码。如何将_SiteLayout的C#代码发送到其所有子页面?我正在使用WebPages Razor 2。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

实现布局页面有两种方法:

在后一种情况下,您可以使用代码部分中的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>