diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Bundling/AbpStyles.razor b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Bundling/AbpStyles.razor
index 488caba797..053e0efd01 100644
--- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Bundling/AbpStyles.razor
+++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Bundling/AbpStyles.razor
@@ -1,11 +1,13 @@
@using Volo.Abp
+@implements IDisposable
@inject IComponentBundleManager BundleManager
+@inject PersistentComponentState PersistentComponentState
@if (StyleFiles != null)
{
foreach (var file in StyleFiles)
{
-
+
}
}
@@ -18,16 +20,37 @@
private List? StyleFiles { get; set; }
+ private PersistingComponentStateSubscription persistingSubscription;
+
protected override async Task OnInitializedAsync()
{
if (BundleName == null)
{
throw new AbpException("The BundleName parameter of the AbpStyles component can not be null!");
}
- StyleFiles = (await BundleManager.GetStyleBundleFilesAsync(BundleName!)).ToList();
+
+ persistingSubscription = PersistentComponentState.RegisterOnPersisting(PersistStyleFiles);
+
+ if (PersistentComponentState.TryTakeFromJson>(nameof(StyleFiles), out var restoredStyleFiles))
+ {
+ StyleFiles = restoredStyleFiles;
+ }
+ else
+ {
+ StyleFiles = (await BundleManager.GetStyleBundleFilesAsync(BundleName!)).ToList();
+ }
+
if (OperatingSystem.IsBrowser() && WebAssemblyStyleFiles != null)
{
- StyleFiles.AddRange(WebAssemblyStyleFiles);
+ StyleFiles!.AddRange(WebAssemblyStyleFiles);
}
}
+
+ private Task PersistStyleFiles()
+ {
+ PersistentComponentState.PersistAsJson(nameof(StyleFiles), StyleFiles);
+ return Task.CompletedTask;
+ }
+
+ public void Dispose() => persistingSubscription.Dispose();
}