diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index fee2d4e5..46fd01db 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -52,6 +52,8 @@ namespace Oqtane.Modules public virtual string RenderMode { get { return RenderModes.Interactive; } } // interactive by default + public virtual bool? Prerender { get { return null; } } // prerender at server by default + // url parameters public virtual string UrlParametersTemplate { get; set; } diff --git a/Oqtane.Client/UI/ModuleInstance.razor b/Oqtane.Client/UI/ModuleInstance.razor index 5d429954..924a96f2 100644 --- a/Oqtane.Client/UI/ModuleInstance.razor +++ b/Oqtane.Client/UI/ModuleInstance.razor @@ -7,7 +7,10 @@ } else { - + var rendermode = InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, ModuleState.Prerender ?? PageState.Site.Prerender); + + + } @code { diff --git a/Oqtane.Client/UI/RenderModeBoundary.razor b/Oqtane.Client/UI/RenderModeBoundary.razor index e4d6873e..d3a11055 100644 --- a/Oqtane.Client/UI/RenderModeBoundary.razor +++ b/Oqtane.Client/UI/RenderModeBoundary.razor @@ -10,7 +10,7 @@ { @if (ModuleType != null) { - @((MarkupString)$"") + @((MarkupString)$"") @DynamicComponent @if (_progressIndicator) diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 43acc3a6..13c35b17 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -476,6 +476,7 @@ // retrieve module component resources var moduleobject = Activator.CreateInstance(moduletype) as IModuleControl; module.RenderMode = moduleobject.RenderMode; + module.Prerender = moduleobject.Prerender; page.Resources = ManagePageResources(page.Resources, moduleobject.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace); if (action.ToLower() == "settings" && module.ModuleDefinition != null) diff --git a/Oqtane.Shared/Interfaces/IModuleControl.cs b/Oqtane.Shared/Interfaces/IModuleControl.cs index 1d442931..df607f8f 100644 --- a/Oqtane.Shared/Interfaces/IModuleControl.cs +++ b/Oqtane.Shared/Interfaces/IModuleControl.cs @@ -35,5 +35,10 @@ namespace Oqtane.Modules /// Specifies the required render mode for the module control ie. Static,Interactive /// string RenderMode { get; } + + /// + /// Specifies the prerender mode for the moudle control ie: true or false + /// + bool? Prerender { get; } } } diff --git a/Oqtane.Shared/Models/Module.cs b/Oqtane.Shared/Models/Module.cs index bae7a0ca..b90e685c 100644 --- a/Oqtane.Shared/Models/Module.cs +++ b/Oqtane.Shared/Models/Module.cs @@ -117,6 +117,8 @@ namespace Oqtane.Models public bool UseAdminContainer { get; set; } [NotMapped] public string RenderMode{ get; set; } + [NotMapped] + public bool? Prerender { get; set; } #endregion