diff --git a/aspnetcore/6.0/blazor/components/class-libraries.md b/aspnetcore/6.0/blazor/components/class-libraries.md
index fa3b22934258..fd15d518183a 100644
--- a/aspnetcore/6.0/blazor/components/class-libraries.md
+++ b/aspnetcore/6.0/blazor/components/class-libraries.md
@@ -241,6 +241,8 @@ An alternative to using the `Link` component is to link to the library's stylesh
`wwwroot/index.html` file (Blazor WebAssembly) or `Pages/_Layout.cshtml` file (Blazor Server):
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```diff
+
```
diff --git a/aspnetcore/6.0/blazor/components/control-head-content.md b/aspnetcore/6.0/blazor/components/control-head-content.md
new file mode 100644
index 000000000000..ef59d4ed0dca
--- /dev/null
+++ b/aspnetcore/6.0/blazor/components/control-head-content.md
@@ -0,0 +1,87 @@
+---
+title: Control <head> content in ASP.NET Core Blazor apps
+author: guardrex
+description: Learn how to control <head> content in Blazor apps, including how to set the page title from a component.
+monikerRange: 'aspnetcore-6.0'
+ms.author: riande
+ms.custom: mvc
+ms.date: 08/03/2021
+no-loc: [Home, Privacy, Kestrel, appsettings.json, "ASP.NET Core Identity", cookie, Cookie, Blazor, "Blazor Server", "Blazor WebAssembly", "Identity", "Let's Encrypt", Razor, SignalR]
+uid: blazor/components/control-head-content
+---
+# Control `
` content in ASP.NET Core Blazor apps
+
+*This feature applies to ASP.NET Core 6.0 Preview 7 or later. ASP.NET Core 6.0 Preview 7 is scheduled for release in August, 2021. ASP.NET Core 6.0 is scheduled for release later this year.*
+
+Razor components can modify the HTML `` element content of a page, including setting the page's title (`` element) and modifying metadata (`` elements).
+
+## Control `` content in a Razor component
+
+Specify the page's title with the `PageTitle` component. Specify `` element content with the `HeadContent` component. The following example sets the page's title and description using Razor.
+
+`Pages/ControlHeadContent.razor`:
+
+```razor
+@page "/control-head-content"
+
+
Control <head> content
+
+
+ Title: @title
+
+
+
+ Description: @description
+
+
+@title
+
+
+
+
+
+@code {
+ private string description = "Description set by component";
+ private string title = "Title set by component";
+}
+```
+
+## `HeadOutlet` component
+
+The `HeadOutlet` component renders content provided by `HeadContent` components.
+
+In an app created from the Blazor WebAssembly project template, the `HeadOutlet` component is added to the collection of the in `Program.Main`:
+
+```csharp
+builder.RootComponents.Add("head::after");
+```
+
+When the [`::after` pseudo-selector](https://developer.mozilla.org/docs/Web/CSS/::after) is specified, the contents of the root component are appended to the existing head contents instead of replacing the content. This allows the app to retain static head content in `wwwroot/index.html` without having to repeat the content in the app's Razor components.
+
+In Blazor Server apps created from the Blazor Server project template, a [Component Tag Helper](xref:mvc/views/tag-helpers/builtin-th/component-tag-helper) renders `` content for the `HeadOutlet` component in `Pages/_Layout.cshtml`:
+
+```cshtml
+
+ ...
+
+
+```
+
+## Not found page title
+
+In Blazor apps created from Blazor project templates, the `NotFound` component template in the `App` component (`App.razor`) sets the page title to `Not found`.
+
+`App.razor`:
+
+```razor
+Not found
+```
+
+## Additional resources
+
+Mozilla MDN Web Docs documentation:
+
+* [What's in the head? Metadata in HTML](https://developer.mozilla.org/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML)
+* [\: The Document Metadata (Header) element](https://developer.mozilla.org/docs/Web/HTML/Element/head)
+* [\: The Document Title element](https://developer.mozilla.org/docs/Web/HTML/Element/title)
+* [\: The metadata element](https://developer.mozilla.org/docs/Web/HTML/Element/meta)
diff --git a/aspnetcore/6.0/blazor/components/css-isolation.md b/aspnetcore/6.0/blazor/components/css-isolation.md
index 02f9b199e780..be78f8f40cfb 100644
--- a/aspnetcore/6.0/blazor/components/css-isolation.md
+++ b/aspnetcore/6.0/blazor/components/css-isolation.md
@@ -47,6 +47,8 @@ h1 {
CSS isolation occurs at build time. Blazor rewrites CSS selectors to match markup rendered by the component. The rewritten CSS styles are bundled and produced as a static asset. The stylesheet is referenced inside the `` tag of `wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server). The following `` element is added by default to an app created from the Blazor project templates, where the placeholder `{ASSEMBLY NAME}` is the project's assembly name:
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```html
```
@@ -210,6 +212,8 @@ In the following example:
`wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server):
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```html
```
diff --git a/aspnetcore/6.0/blazor/components/event-handling.md b/aspnetcore/6.0/blazor/components/event-handling.md
index 72b5cc7f454d..108f39183477 100644
--- a/aspnetcore/6.0/blazor/components/event-handling.md
+++ b/aspnetcore/6.0/blazor/components/event-handling.md
@@ -96,6 +96,8 @@ Custom events with custom event arguments are generally enabled with the followi
1. Register the custom event with the preceding handler in `wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server) immediately after the Blazor `
+
@@ -671,6 +675,8 @@ To solve these problems, Blazor supports persisting state in a prerendered page
::: zone pivot="server"
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
`Pages/_Layout.cshtml`:
```cshtml
diff --git a/aspnetcore/6.0/blazor/fundamentals/handle-errors.md b/aspnetcore/6.0/blazor/fundamentals/handle-errors.md
index 7ad049eb2fa6..72429598518d 100644
--- a/aspnetcore/6.0/blazor/fundamentals/handle-errors.md
+++ b/aspnetcore/6.0/blazor/fundamentals/handle-errors.md
@@ -232,6 +232,8 @@ The UI for this error handling experience is part of the [Blazor project templat
In a Blazor Server app, customize the experience in the `Pages/_Layout.cshtml` file:
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```cshtml
diff --git a/aspnetcore/6.0/blazor/fundamentals/routing.md b/aspnetcore/6.0/blazor/fundamentals/routing.md
index 8b4a23a9b529..d9e7aaf92db0 100644
--- a/aspnetcore/6.0/blazor/fundamentals/routing.md
+++ b/aspnetcore/6.0/blazor/fundamentals/routing.md
@@ -41,6 +41,8 @@ Components support multiple route templates using multiple [`@page` directives](
> [!IMPORTANT]
> For URLs to resolve correctly, the app must include a `` tag in its `wwwroot/index.html` file (Blazor WebAssembly) or `Pages/_Layout.cshtml` file (Blazor Server) with the app base path specified in the `href` attribute. For more information, see .
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
The doesn't interact with query string values. To work with query strings, see the [Query string and parse parameters](#query-string-and-parse-parameters) section.
## Focus an element on navigation
@@ -232,6 +234,8 @@ Use to manage URIs and
| | Converts a relative URI into an absolute URI. |
| | Given a base URI (for example, a URI previously returned by ), converts an absolute URI into a URI relative to the base URI prefix. |
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
For the event, provides the following information about navigation events:
* : The URL of the new location.
diff --git a/aspnetcore/6.0/blazor/fundamentals/signalr.md b/aspnetcore/6.0/blazor/fundamentals/signalr.md
index 9c5867ca7d3c..d724ad4a6756 100644
--- a/aspnetcore/6.0/blazor/fundamentals/signalr.md
+++ b/aspnetcore/6.0/blazor/fundamentals/signalr.md
@@ -137,6 +137,8 @@ When the client detects that the connection has been lost, a default UI is displ
To customize the UI, define an element with an `id` of `components-reconnect-modal` in the `` of the `_Layout.cshtml` Razor page.
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
`Pages/_Layout.cshtml`:
```cshtml
@@ -176,6 +178,8 @@ By default, Blazor Server apps prerender the UI on the server before the client
Configure the manual start of a Blazor Server app's [SignalR circuit](xref:blazor/hosting-models#circuits) in the `Pages/_Layout.cshtml` file:
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
* Add an `autostart="false"` attribute to the ``, where the `{SCRIPT PATH AND FILE NAME (.js)}` placeholder is the path and file name of the script.
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```javascript
`) in the `` element markup of `wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server):
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```html
...
@@ -70,6 +72,8 @@ Loading JS from the `` isn't the best approach for the following reasons:
Place the script (``) inside the closing `` element markup of `wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server):
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```html
...
@@ -91,6 +95,8 @@ Place the script (``) with a script `src` path inside the c
In `wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server):
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```html
...
@@ -138,6 +144,8 @@ For more information, see .
Load JS from an injected script in `wwwroot/index.html` (Blazor WebAssembly) or `Pages/_Layout.cshtml` (Blazor Server) when the app is initialized:
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
* Add `autostart="false"` to the ``) inside the closing `` tag after the Blazor script is loaded.
diff --git a/aspnetcore/6.0/blazor/project-structure.md b/aspnetcore/6.0/blazor/project-structure.md
index ed242290c66d..999b27e4984c 100644
--- a/aspnetcore/6.0/blazor/project-structure.md
+++ b/aspnetcore/6.0/blazor/project-structure.md
@@ -67,6 +67,8 @@ The Blazor Server template creates the initial files and directory structure for
* `FetchData` component (`FetchData.razor`): Implements the Fetch data page.
* `Index` component (`Index.razor`): Implements the Home page.
+[!INCLUDE[](includes/layout-page-preview-7.md)]
+
> [!NOTE]
> JavaScript (JS) files added to the `Pages/_Layout.cshtml` file should appear before the closing `` tag. The order that custom JS code is loaded from JS files is important in some scenarios. For example, ensure that JS files with interop methods are included before Blazor framework JS files.
diff --git a/aspnetcore/6.0/blazor/security/content-security-policy.md b/aspnetcore/6.0/blazor/security/content-security-policy.md
index ae4250ec7c8d..0e0b563e209a 100644
--- a/aspnetcore/6.0/blazor/security/content-security-policy.md
+++ b/aspnetcore/6.0/blazor/security/content-security-policy.md
@@ -98,6 +98,8 @@ The particular script associated with the error is displayed in the console next
In the `` content of the `Pages/_Layout.cshtml` host page, apply the directives described in the [Policy directives](#policy-directives) section:
+[!INCLUDE[](../includes/layout-page-preview-7.md)]
+
```cshtml
```
-Prerendering of `` content is disabled in `Pages/_Layout.cshtml`:
+[Prerendering of `` content](xref:blazor/components/control-head-content) is disabled in `Pages/_Layout.cshtml`:
+
+[!INCLUDE[](includes/layout-page-preview-7.md)]
```cshtml
diff --git a/aspnetcore/6.0/blazor/toc.yml b/aspnetcore/6.0/blazor/toc.yml
index d59a7462aae5..840c82b07e75 100644
--- a/aspnetcore/6.0/blazor/toc.yml
+++ b/aspnetcore/6.0/blazor/toc.yml
@@ -37,6 +37,8 @@ items:
href: components/index.md
- name: Layouts
href: components/layouts.md
+ - name: Control <head> content
+ href: components/control-head-content.md
- name: Cascading values and parameters
href: components/cascading-values-and-parameters.md
- name: Data binding