overview
Some Razor Components modify the HTML <head> element’s content of a page.
HTML <title> Element and PageTitle Component
Set the page’s title with a PageTitle component. This renders the HTML <title> element to a HeadOutlet component:
@page "/set-title"
<h1>Setting title</h1>
<p>Title: @title</p>
<PageTitle>@title</PageTitle>
@code {
private string title = "Title set by component";
}
HTML <head> Element and HeadContent Component
Set the content of the <head> element with a HeadContent component. This provides content to a HeadOutlet component:
@page "/control-head-content"
<h1>Control <head> content</h1>
<p>Title: @title</p>
<p>Description: @description</p>
<PageTitle>@title</PageTitle>
<HeadContent>
<meta name="description" content="@description">
</HeadContent>
@code {
private string description = "Description set by component";
private string title = "Title set by component";
}
HeadOutlet Component
Renders content provided by HeadContent and PageTitle components.
in blazor wasm
The HeadOutlet component is added to the RootComponents collection in Program.cs:
builder.RootComponents.Add<HeadOutlet>("head::after");
By using the ::after pseudo-selector, contents of the root component appended to existing head contents instead of replacing them.
in blazor server
A component tag helper in Pages/_Host.cshtml renders <head> content for the HeadOutlet component:
<head>
...
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
</head>
NotFound Component
The NotFound Component in the App Component (App.razor) sets the page title to “Not found”:
<PageTitle>Not found</PageTitle>