指定@layout
(显式或通过_Imports.razor文件)时,Blazor将使用LayoutAttribute
装饰生成的目标类。
[Microsoft.AspNetCore.Components.LayoutAttribute(typeof(MainLayout))]
public class AdminUsers : Microsoft.AspNetCore.Components.ComponentBase
{
}
注意:生成的
.cs
文件可以在项目的obj \ Debug \ netstandard2.0 \ Razor \文件夹中找到。
Blazor将在任何ComponentBase
后代上使用LayoutAttribute
。页面不仅来自该类,而且LayoutComponentBase
也来自该类!这意味着自定义布局也可以具有自己的父布局。
接下来,我们将为
- 编辑/Shared/AdminLayout.razor文件。
- 通过添加
@layout MainLayout
明确声明它使用MainLayout作为其父级。
@inherits LayoutComponentBase
@layout MainLayout
<h1>Admin</h1>
@Body
首先,我们从LayoutComponentBase
继承我们的视图,然后告诉Blazor我们希望将此布局包含在MainLayout Razor
视图中,最后,通过输出Body
属性的内容来渲染使用视图所声明的任何内容。
为了确保AdminUsers
页面使用AdminLayout
,请确保AdminUsers.razor文件顶部没有显式的@layout
。这将告诉Blazor使用Pages/Admin/_Imports.razor中指定的布局。
@page "/admin/users"
<h2>Users</h2>