Servicestack 在 Razor 内容页面中包含 _Layout.cshtml
Servicestack include _Layout.cshtml in Razor Content Page
如何在 Razor 内容页面中包含 _Layout.cshtml?
例如,我在项目的根目录中创建了两个 cshtml 文件。
第一个文件是_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h1>Main Layout</h1>
<br>
<br>
@RenderBody();
</body>
</html>
第二个文件是 Product.cshtml
@inherits ServiceStack.Razor.ViewPage
@{
Layout = "~/_Layout.cshtml";
}
<h1>Product Page</h1>
当我打电话时 http://localhost:6000/product
在浏览器中的结果是
Product Page
但应该是
Main Layout
Product Page
为什么?
有什么问题吗?
布局名称应该是文件名而不是路径,您永远不需要引用 _Layout
,因为它是默认设置。
此外,如果您希望您的视图和内容页面共享相同的 _Layout.cshtml
页面,请将它们一次添加到 /Views/_Layout.cshtml
或 /Views/Shared/_Layout.cshtml
。
如果这是自托管 HttpListener 项目,您需要确保所有 *.cshtml
都设置为 复制到输出目录 或 WebHostPhysicalPath references your project path.
如何在 Razor 内容页面中包含 _Layout.cshtml?
例如,我在项目的根目录中创建了两个 cshtml 文件。
第一个文件是_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h1>Main Layout</h1>
<br>
<br>
@RenderBody();
</body>
</html>
第二个文件是 Product.cshtml
@inherits ServiceStack.Razor.ViewPage
@{
Layout = "~/_Layout.cshtml";
}
<h1>Product Page</h1>
当我打电话时 http://localhost:6000/product
在浏览器中的结果是
Product Page
但应该是
Main Layout
Product Page
为什么? 有什么问题吗?
布局名称应该是文件名而不是路径,您永远不需要引用 _Layout
,因为它是默认设置。
此外,如果您希望您的视图和内容页面共享相同的 _Layout.cshtml
页面,请将它们一次添加到 /Views/_Layout.cshtml
或 /Views/Shared/_Layout.cshtml
。
如果这是自托管 HttpListener 项目,您需要确保所有 *.cshtml
都设置为 复制到输出目录 或 WebHostPhysicalPath references your project path.