diff options
author | Pranav K <prkrishn@hotmail.com> | 2022-03-03 22:42:57 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-03 22:42:57 +0300 |
commit | e9dddd6465f3a9fe6ec281fd548831b67dea7778 (patch) | |
tree | 752881690b43c83dc72268184686b424450ac0fe /src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp | |
parent | 381755891fd8019ecd7a73bf15d82fdb8a0715c8 (diff) |
Modify HtmlRenderer to update content when a component re-renders (#40512)
Prior to this change HtmlRenderer would return a snapshot of a component immediately after it was initially rendered. This meant any updates to a component as a result of other root components rendering were lost.
In this change, we update the HtmlRenderer to return a placeholder `IHtmlContent` that retrieves render frames only when `WriteTo` is invoked. Typically MVC will defer calling WriteTo until the content is about to be sent to the wire, which means any updates to a component (e.g. HeadOutlet being updated) are picked up.
Also updates the template to consolidate `_Host` and `_Layout`.
Fixes https://github.com/dotnet/aspnetcore/issues/38400
Diffstat (limited to 'src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp')
2 files changed, 29 insertions, 36 deletions
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Host.cshtml b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Host.cshtml index c8b0009bc2..132aad8a77 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Host.cshtml +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Host.cshtml @@ -1,8 +1,33 @@ @page "/" +@using Microsoft.AspNetCore.Components.Web @namespace BlazorServerWeb_CSharp.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers -@{ - Layout = "_Layout"; -} -<component type="typeof(App)" render-mode="ServerPrerendered" /> +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <base href="~/" /> + <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" /> + <link href="css/site.css" rel="stylesheet" /> + <link href="BlazorServerWeb-CSharp.styles.css" rel="stylesheet" /> + <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" /> +</head> +<body> + <component type="typeof(App)" render-mode="ServerPrerendered" /> + + <div id="blazor-error-ui"> + <environment include="Staging,Production"> + An error has occurred. This application may no longer respond until reloaded. + </environment> + <environment include="Development"> + An unhandled exception has occurred. See browser dev tools for details. + </environment> + <a href="" class="reload">Reload</a> + <a class="dismiss">🗙</a> + </div> + + <script src="_framework/blazor.server.js"></script> +</body> +</html> diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Layout.cshtml b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Layout.cshtml deleted file mode 100644 index c265ac4b9e..0000000000 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/_Layout.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@using Microsoft.AspNetCore.Components.Web -@namespace BlazorServerWeb_CSharp.Pages -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers - -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <base href="~/" /> - <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" /> - <link href="css/site.css" rel="stylesheet" /> - <link href="BlazorServerWeb-CSharp.styles.css" rel="stylesheet" /> - <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" /> -</head> -<body> - @RenderBody() - - <div id="blazor-error-ui"> - <environment include="Staging,Production"> - An error has occurred. This application may no longer respond until reloaded. - </environment> - <environment include="Development"> - An unhandled exception has occurred. See browser dev tools for details. - </environment> - <a href="" class="reload">Reload</a> - <a class="dismiss">🗙</a> - </div> - - <script src="_framework/blazor.server.js"></script> -</body> -</html> |