第三章 组件(8)- 控制 <head> 内容

Razor 组件可以修改页面的 HTML <head> 元素内容,包括页标题<title>元素、元数据<meta>元素、<base><link>等。

HeadOutlet组件

在Blazor中,可以通过HeadOutlet组件来控制HTML中的 <head> 内容。

HeadOutlet组件用于<head>元素内,用来渲染子组件中,PageTitleHeadContent组件提供的内容。

例如在BlazorServer项目模板的App.razor中,可以看到如下代码:

csharp 复制代码
......
<head>
    ......
    <HeadOutlet />
</head>
......

Blazor WebAssembly中的HeadOutlet

在客户端的项目(Blazor WebAssembly)应用中,HeadOutlet组件在 Program 文件中被添加到客户端。

csharp 复制代码
builder.RootComponents.Add<HeadOutlet>("head::after");

指定 ::after 伪选择器后,根组件的内容将追加到现有标头内容,而不是替换内容。 这使客户端项目可以在 wwwroot/index.html 中保留静态标头内容,而无需重复应用的 Razor 组件中的内容。

PageTitle和HeadContent组件

如果想要设置<title>元素,可以将<title>的内容,放置在Razor的 PageTitle 组件内,这样可以将其作为 HTML <title> 元素传递给 HeadOutlet 组件进行渲染。

如果想要设置<head>元素中除了<title>外的其他元素,可以将其放置在Razor的HeadContent组件中,其会将元素传递给HeadOutlet 组件进行渲染。

  • ControlHeadContent.razor

    csharp 复制代码
    @page "/control-head-content"
    
    <PageTitle>@title</PageTitle>
    
    <h1>Control <head> Content Example</h1>
    
    <p>
        Title: @title
    </p>
    
    <p>
        Description: @description
    </p>
    
    <HeadContent>
        <meta name="description" content="@description">
    </HeadContent>
    
    @code {
        private string description = "This description is set by the component.";
        private string title = "Control <head> Content";
    }

默认标题和布局标题

可以在App.razor或布局组件中使用PageTitle组件,如果同时在App.razor、布局组件和组件内部使用了PageTitle组件,那么其优先级为组件标题>布局标题>默认标题。

  • App.razor

    csharp 复制代码
    ......
    
    <head>
        ......
        <HeadOutlet/>
        <PageTitle>Page Title</PageTitle>
    </head>
    
    ......
相关推荐
yinuo12 小时前
前端跨页面通讯终极指南⑨:IndexedDB 用法全解析
前端
喵叔哟12 小时前
20.部署与运维
运维·docker·容器·.net
xkxnq12 小时前
第二阶段:Vue 组件化开发(第 16天)
前端·javascript·vue.js
烛阴12 小时前
拒绝配置地狱!5 分钟搭建 Three.js + Parcel 完美开发环境
前端·webgl·three.js
xkxnq13 小时前
第一阶段:Vue 基础入门(第 15天)
前端·javascript·vue.js
anyup14 小时前
2026第一站:分享我在高德大赛现场学到的技术、产品与心得
前端·架构·harmonyos
BBBBBAAAAAi14 小时前
Claude Code安装记录
开发语言·前端·javascript
xiaolyuh12314 小时前
【XXL-JOB】 GLUE模式 底层实现原理
java·开发语言·前端·python·xxl-job
源码获取_wx:Fegn089514 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
毕设十刻14 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js