Razor Pages 不使用它的布局

Posted

技术标签:

【中文标题】Razor Pages 不使用它的布局【英文标题】:Razor Pages doesn't use it's layout 【发布时间】:2021-06-03 14:23:47 【问题描述】:

我创建了一个位于 ~/Pages/Shared 文件夹中的 LayoutAdmin.cshtml。它在 ~/Pages/Admin 中的 Index.cshtml 中被引用,如下所示:

@page
@ 
    Layout = "_LayoutAdmin";
    ViewData["Title"] = "Admin Home";

但是当我转到该页面时,它会像在任何其他页面中一样使用默认布局。这是什么原因?代码中是否有指定的默认布局覆盖了我指定的布局?

【问题讨论】:

【参考方案1】:

这是一个例子:

~/Pages/Shared/_LayoutAdmin.cshtml

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
    <link href="/css/site.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div>
       <h1>This is Admin layout </h1>
    </div>
    <div>
        @RenderBody()
    </div>
</body>
</html>

~/Pages/Admin/Index

@page
@model IndexModel
@
    Layout = "_LayoutAdmin";
    ViewData["Title"] = "Admin Home";

结果:

【讨论】:

你做了完全相同的事情,但我的不起作用。它只呈现我放入“索引”的内容,而不是我在布局中指定的内容。 你可以新建一个项目试试这个。【参考方案2】:

好的,我已经解决了这个问题。 我已经删除了 _Layout.cshtml 页面,并创建了一个新页面作为具有相同内容的空白剃须刀页面。

【讨论】:

我认为还有另一种方法可以在您的_ViewStart.中将默认布局设置为空 我正在使用 _ViewStart 但 _Layout 文件本身在将其更改为具有相同代码的剃须刀页面之前不起作用。

以上是关于Razor Pages 不使用它的布局的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Razor 页面中使用 MVC 部分视图和布局

Asp .NET Core 2.2 Razor 页面布局和局部

在 React 和 TypeScript 中构建布局组件

社交引擎自定义页面能够添加小部件和更改布局

Razor Pages,表单页面处理程序不使用 GET 方法

[Asp.Net Core]MVC_Razor布局