0
我有一个_SiteLayout.cshtml文件,该文件构成了该网站,并且上面有一些C#代码。如何将_SiteLayout的C#代码发送到其所有子页面?我正在使用WebPages Razor 2.布局页面的代码没有被发送到内容页面
在此先感谢您。
我有一个_SiteLayout.cshtml文件,该文件构成了该网站,并且上面有一些C#代码。如何将_SiteLayout的C#代码发送到其所有子页面?我正在使用WebPages Razor 2.布局页面的代码没有被发送到内容页面
在此先感谢您。
有两种方法可以实现页面布局:
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>
我使用的是第一种方法,然而,C#代码,我在我的布局页做的,不落实上使用该布局页面进行布局的页面。这就是我需要做的,但由于某种原因,它并没有。 – Mikkel
@ user3250722我误解了你的问题。现在我编辑了我的答案。 – GmG
谢谢你的回答,我曾希望一个简单的布局页面也将布局页面的C#代码传递给它的内容页面,但不幸的是没有。在我的情况下,我正在检查用户是否在布局页面上登录,所以我不必为每个内容页面都做同样的事情,我认为它工作,但显然不是,嘿嘿。感谢你的回答! – Mikkel