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.