From e77120f5df75de29a40c14e2ad3891125519b1d9 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Wed, 28 Jun 2017 19:49:55 +0100 Subject: [PATCH] Implement optional server-side prerendering support --- .../ClientServerApp.Client/FetchData.cshtml | 2 +- .../Shared/NavMenu.cshtml | 2 +- .../ClientServerApp.Server/Startup.cs | 6 +- .../BlazorApplicationBuilderExtensions.cs | 46 +++- src/Blazor.Host/Host/Prerendering.cs | 215 ++++++++++++++++++ src/Blazor.Host/Host/RazorCompilation.cs | 21 +- .../wwwroot/_framework/Blazor.Runtime.js | 11 +- .../Components/BlazorContext.cs | 12 + src/Blazor.Runtime/Components/Component.cs | 44 +++- .../Components/RazorComponent.cs | 27 ++- src/Blazor.Runtime/Interop/Browser.cs | 3 + src/Blazor.Runtime/Interop/Components.cs | 17 +- src/Blazor.Runtime/Interop/Env.cs | 14 ++ src/Blazor.Runtime/Interop/ManagedGCHandle.cs | 16 +- src/Blazor.Runtime/Routing/Router.cs | 19 +- src/Blazor.Runtime/VirtualDom/VDomBuilder.cs | 16 +- src/Blazor.Runtime/VirtualDom/VDomItem.cs | 2 +- 17 files changed, 419 insertions(+), 54 deletions(-) create mode 100644 src/Blazor.Host/Host/Prerendering.cs create mode 100644 src/Blazor.Runtime/Components/BlazorContext.cs create mode 100644 src/Blazor.Runtime/Interop/Env.cs diff --git a/samples/ClientServerApp/ClientServerApp.Client/FetchData.cshtml b/samples/ClientServerApp/ClientServerApp.Client/FetchData.cshtml index c0e4da23..83374292 100644 --- a/samples/ClientServerApp/ClientServerApp.Client/FetchData.cshtml +++ b/samples/ClientServerApp/ClientServerApp.Client/FetchData.cshtml @@ -38,7 +38,7 @@ else { using (var client = new HttpClient()) { - var json = await client.GetStringAsync("/api/SampleData/WeatherForecasts"); + var json = await client.GetStringAsync(AbsoluteUrl("/api/SampleData/WeatherForecasts")); forecasts = JsonUtil.Deserialize(json); } } diff --git a/samples/ClientServerApp/ClientServerApp.Client/Shared/NavMenu.cshtml b/samples/ClientServerApp/ClientServerApp.Client/Shared/NavMenu.cshtml index ee151ff9..67bfbf15 100644 --- a/samples/ClientServerApp/ClientServerApp.Client/Shared/NavMenu.cshtml +++ b/samples/ClientServerApp/ClientServerApp.Client/Shared/NavMenu.cshtml @@ -14,7 +14,7 @@