add support for Render Modes and Prerendering
This commit is contained in:
parent
fdfbf54808
commit
50e179f7a8
|
@ -5,16 +5,16 @@ namespace Oqtane.Client.Utilities
|
||||||
{
|
{
|
||||||
public static class RenderModes
|
public static class RenderModes
|
||||||
{
|
{
|
||||||
public static IComponentRenderMode GetRenderMode(string renderMode)
|
public static IComponentRenderMode GetInteractiveRenderMode(string interactiveRenderMode, bool prerender)
|
||||||
{
|
{
|
||||||
switch (renderMode)
|
switch (interactiveRenderMode)
|
||||||
{
|
{
|
||||||
case "InteractiveServer":
|
case "InteractiveServer":
|
||||||
return RenderMode.InteractiveServer;
|
return new InteractiveServerRenderMode(prerender);
|
||||||
case "InteractiveWebAssembly":
|
case "InteractiveWebAssembly":
|
||||||
return RenderMode.InteractiveWebAssembly;
|
return new InteractiveWebAssemblyRenderMode(prerender);
|
||||||
case "InteractiveAuto":
|
case "InteractiveAuto":
|
||||||
return RenderMode.InteractiveAuto;
|
return new InteractiveAutoRenderMode(prerender);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,13 +40,27 @@
|
||||||
@((MarkupString)_styleSheets)
|
@((MarkupString)_styleSheets)
|
||||||
<link id="app-stylesheet-page" />
|
<link id="app-stylesheet-page" />
|
||||||
<link id="app-stylesheet-module" />
|
<link id="app-stylesheet-module" />
|
||||||
<Head @rendermode="@RenderModes.GetRenderMode(_interactiveRenderMode)" />
|
@if (_renderMode == "Interactive")
|
||||||
|
{
|
||||||
|
<Head @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender)" />
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<Head />
|
||||||
|
}
|
||||||
@((MarkupString)_headResources)
|
@((MarkupString)_headResources)
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@if (string.IsNullOrEmpty(_message))
|
@if (string.IsNullOrEmpty(_message))
|
||||||
{
|
{
|
||||||
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="Server" RenderMode="PreRendered" VisitorId="-1" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="" @rendermode="@RenderModes.GetRenderMode(_interactiveRenderMode)" />
|
@if (_renderMode == "Interactive")
|
||||||
|
{
|
||||||
|
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="Server" RenderMode="PreRendered" VisitorId="-1" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="" @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender)" />
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="Server" RenderMode="PreRendered" VisitorId="-1" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="" />
|
||||||
|
}
|
||||||
|
|
||||||
<script src="js/interop.js"></script>
|
<script src="js/interop.js"></script>
|
||||||
<script src="_framework/blazor.web.js"></script>
|
<script src="_framework/blazor.web.js"></script>
|
||||||
|
@ -69,7 +83,9 @@
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private string _interactiveRenderMode = "InteractiveServer";
|
private string _renderMode = "Interactive";
|
||||||
|
private string _interactiveRenderMode = "Server";
|
||||||
|
private bool _prerender = true;
|
||||||
private string _language = "en";
|
private string _language = "en";
|
||||||
private string _antiForgeryToken = "";
|
private string _antiForgeryToken = "";
|
||||||
private string _remoteIPAddress = "";
|
private string _remoteIPAddress = "";
|
||||||
|
@ -102,14 +118,14 @@
|
||||||
var site = SiteRepository.GetSite(alias.SiteId);
|
var site = SiteRepository.GetSite(alias.SiteId);
|
||||||
if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && site.Runtime != "Hybrid")
|
if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && site.Runtime != "Hybrid")
|
||||||
{
|
{
|
||||||
// if (!string.IsNullOrEmpty(site.Runtime))
|
if (!string.IsNullOrEmpty(site.Runtime))
|
||||||
// {
|
{
|
||||||
// Runtime = site.Runtime;
|
_interactiveRenderMode = site.Runtime;
|
||||||
// }
|
}
|
||||||
// if (!string.IsNullOrEmpty(site.RenderMode))
|
if (!string.IsNullOrEmpty(site.RenderMode))
|
||||||
// {
|
{
|
||||||
// RenderMode = site.RenderMode;
|
_prerender = (site.RenderMode.Replace(site.Runtime, "")) == "Prerendered";
|
||||||
// }
|
}
|
||||||
|
|
||||||
Route route = new Route(url, alias.Path);
|
Route route = new Route(url, alias.Path);
|
||||||
var page = PageRepository.GetPage(route.PagePath, site.SiteId);
|
var page = PageRepository.GetPage(route.PagePath, site.SiteId);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user