Skip to content

Commit d9db8a2

Browse files
committed
Upgrade to preview 9
1 parent 486cc9a commit d9db8a2

16 files changed

Lines changed: 169 additions & 180 deletions

‎Blazored.SessionStorage.sln‎

Lines changed: 77 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,77 @@
1-
2-
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.28531.58
5-
MinimumVisualStudioVersion = 15.0.26124.0
6-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazored.SessionStorage", "src\Blazored.SessionStorage\Blazored.SessionStorage.csproj", "{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}"
7-
EndProject
8-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{F20B2AAB-FB71-4A1C-82FE-F1750B922BF6}"
9-
EndProject
10-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorClientSide", "samples\BlazorClientSide\BlazorClientSide.csproj", "{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}"
11-
EndProject
12-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorServerSide", "samples\BlazorServerSide\BlazorServerSide.csproj", "{767D657A-5410-4714-9477-99929D3FF709}"
13-
EndProject
14-
Global
15-
GlobalSection(SolutionConfigurationPlatforms) = preSolution
16-
Debug|Any CPU = Debug|Any CPU
17-
Debug|x64 = Debug|x64
18-
Debug|x86 = Debug|x86
19-
Release|Any CPU = Release|Any CPU
20-
Release|x64 = Release|x64
21-
Release|x86 = Release|x86
22-
EndGlobalSection
23-
GlobalSection(ProjectConfigurationPlatforms) = postSolution
24-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
26-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x64.ActiveCfg = Debug|Any CPU
27-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x64.Build.0 = Debug|Any CPU
28-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x86.ActiveCfg = Debug|Any CPU
29-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x86.Build.0 = Debug|Any CPU
30-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
31-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|Any CPU.Build.0 = Release|Any CPU
32-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x64.ActiveCfg = Release|Any CPU
33-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x64.Build.0 = Release|Any CPU
34-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x86.ActiveCfg = Release|Any CPU
35-
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x86.Build.0 = Release|Any CPU
36-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
37-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
38-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x64.ActiveCfg = Debug|Any CPU
39-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x64.Build.0 = Debug|Any CPU
40-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x86.ActiveCfg = Debug|Any CPU
41-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x86.Build.0 = Debug|Any CPU
42-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
43-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|Any CPU.Build.0 = Release|Any CPU
44-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x64.ActiveCfg = Release|Any CPU
45-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x64.Build.0 = Release|Any CPU
46-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x86.ActiveCfg = Release|Any CPU
47-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x86.Build.0 = Release|Any CPU
48-
{767D657A-5410-4714-9477-99929D3FF709}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
49-
{767D657A-5410-4714-9477-99929D3FF709}.Debug|Any CPU.Build.0 = Debug|Any CPU
50-
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x64.ActiveCfg = Debug|Any CPU
51-
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x64.Build.0 = Debug|Any CPU
52-
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x86.ActiveCfg = Debug|Any CPU
53-
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x86.Build.0 = Debug|Any CPU
54-
{767D657A-5410-4714-9477-99929D3FF709}.Release|Any CPU.ActiveCfg = Release|Any CPU
55-
{767D657A-5410-4714-9477-99929D3FF709}.Release|Any CPU.Build.0 = Release|Any CPU
56-
{767D657A-5410-4714-9477-99929D3FF709}.Release|x64.ActiveCfg = Release|Any CPU
57-
{767D657A-5410-4714-9477-99929D3FF709}.Release|x64.Build.0 = Release|Any CPU
58-
{767D657A-5410-4714-9477-99929D3FF709}.Release|x86.ActiveCfg = Release|Any CPU
59-
{767D657A-5410-4714-9477-99929D3FF709}.Release|x86.Build.0 = Release|Any CPU
60-
EndGlobalSection
61-
GlobalSection(SolutionProperties) = preSolution
62-
HideSolutionNode = FALSE
63-
EndGlobalSection
64-
GlobalSection(NestedProjects) = preSolution
65-
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4} = {F20B2AAB-FB71-4A1C-82FE-F1750B922BF6}
66-
{767D657A-5410-4714-9477-99929D3FF709} = {F20B2AAB-FB71-4A1C-82FE-F1750B922BF6}
67-
EndGlobalSection
68-
GlobalSection(ExtensibilityGlobals) = postSolution
69-
SolutionGuid = {2B91883F-A85A-49EB-A9C1-ABD567A9375E}
70-
EndGlobalSection
71-
EndGlobal
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.28531.58
5+
MinimumVisualStudioVersion = 15.0.26124.0
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazored.SessionStorage", "src\Blazored.SessionStorage\Blazored.SessionStorage.csproj", "{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}"
7+
EndProject
8+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{F20B2AAB-FB71-4A1C-82FE-F1750B922BF6}"
9+
EndProject
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorClientSide", "samples\BlazorClientSide\BlazorClientSide.csproj", "{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}"
11+
EndProject
12+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorServerSide", "samples\BlazorServerSide\BlazorServerSide.csproj", "{767D657A-5410-4714-9477-99929D3FF709}"
13+
EndProject
14+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9B1C958A-85F6-4387-98D9-71CEEE0A2A03}"
15+
ProjectSection(SolutionItems) = preProject
16+
azure-pipelines.yml = azure-pipelines.yml
17+
README.md = README.md
18+
EndProjectSection
19+
EndProject
20+
Global
21+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
22+
Debug|Any CPU = Debug|Any CPU
23+
Debug|x64 = Debug|x64
24+
Debug|x86 = Debug|x86
25+
Release|Any CPU = Release|Any CPU
26+
Release|x64 = Release|x64
27+
Release|x86 = Release|x86
28+
EndGlobalSection
29+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
30+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
32+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x64.ActiveCfg = Debug|Any CPU
33+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x64.Build.0 = Debug|Any CPU
34+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x86.ActiveCfg = Debug|Any CPU
35+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Debug|x86.Build.0 = Debug|Any CPU
36+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
37+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|Any CPU.Build.0 = Release|Any CPU
38+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x64.ActiveCfg = Release|Any CPU
39+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x64.Build.0 = Release|Any CPU
40+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x86.ActiveCfg = Release|Any CPU
41+
{EFA12DC3-35DE-449C-88F2-2BD7576CAF2C}.Release|x86.Build.0 = Release|Any CPU
42+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
44+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x64.ActiveCfg = Debug|Any CPU
45+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x64.Build.0 = Debug|Any CPU
46+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x86.ActiveCfg = Debug|Any CPU
47+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Debug|x86.Build.0 = Debug|Any CPU
48+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
49+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|Any CPU.Build.0 = Release|Any CPU
50+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x64.ActiveCfg = Release|Any CPU
51+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x64.Build.0 = Release|Any CPU
52+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x86.ActiveCfg = Release|Any CPU
53+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4}.Release|x86.Build.0 = Release|Any CPU
54+
{767D657A-5410-4714-9477-99929D3FF709}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55+
{767D657A-5410-4714-9477-99929D3FF709}.Debug|Any CPU.Build.0 = Debug|Any CPU
56+
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x64.ActiveCfg = Debug|Any CPU
57+
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x64.Build.0 = Debug|Any CPU
58+
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x86.ActiveCfg = Debug|Any CPU
59+
{767D657A-5410-4714-9477-99929D3FF709}.Debug|x86.Build.0 = Debug|Any CPU
60+
{767D657A-5410-4714-9477-99929D3FF709}.Release|Any CPU.ActiveCfg = Release|Any CPU
61+
{767D657A-5410-4714-9477-99929D3FF709}.Release|Any CPU.Build.0 = Release|Any CPU
62+
{767D657A-5410-4714-9477-99929D3FF709}.Release|x64.ActiveCfg = Release|Any CPU
63+
{767D657A-5410-4714-9477-99929D3FF709}.Release|x64.Build.0 = Release|Any CPU
64+
{767D657A-5410-4714-9477-99929D3FF709}.Release|x86.ActiveCfg = Release|Any CPU
65+
{767D657A-5410-4714-9477-99929D3FF709}.Release|x86.Build.0 = Release|Any CPU
66+
EndGlobalSection
67+
GlobalSection(SolutionProperties) = preSolution
68+
HideSolutionNode = FALSE
69+
EndGlobalSection
70+
GlobalSection(NestedProjects) = preSolution
71+
{D6953CE0-6AD5-434C-99AA-7FF1E26724D4} = {F20B2AAB-FB71-4A1C-82FE-F1750B922BF6}
72+
{767D657A-5410-4714-9477-99929D3FF709} = {F20B2AAB-FB71-4A1C-82FE-F1750B922BF6}
73+
EndGlobalSection
74+
GlobalSection(ExtensibilityGlobals) = postSolution
75+
SolutionGuid = {2B91883F-A85A-49EB-A9C1-ABD567A9375E}
76+
EndGlobalSection
77+
EndGlobal

‎README.md‎

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,69 +5,85 @@ A library to provide access to session storage in Blazor applications
55

66
![Nuget](https://img.shields.io/nuget/v/blazored.sessionstorage.svg)
77

8-
## Important Notice For Server-side Blazor Apps
9-
There is currently an issue with [Server-side Blazor apps](https://devblogs.microsoft.com/aspnet/aspnet-core-3-preview-2/#sharing-component-libraries) (not Client-side Blazor). They are unable to import static assets from component libraries such as this one.
10-
11-
You can still use this package, however, you will need to manually add the JavaScript file to your Server-side Blazor projects `wwwroot` folder. Then you will need to reference it in your `index.html`.
12-
13-
Alternatively, there is a great package by [Mister Magoo](https://github.com/SQL-MisterMagoo/BlazorEmbedLibrary) which offers a solution to this problem without having to manually copy files.
14-
158
### Installing
169

17-
You can install from Nuget using the following command:
10+
You can install from NuGet using the following command:
1811

1912
`Install-Package Blazored.SessionStorage`
2013

2114
Or via the Visual Studio package manger.
2215

2316
### Setup
2417

25-
First, you will need to register session storage with the service collection in your _startup.cs_ file
18+
You need to add a reference to the Blazored SessionStorage javascript file in your `index.html` (Blazor WebAssembly) `_Host.cshtml` (Blazor Server).
19+
20+
```html
21+
<script src="_content/Blazored.SessionStorage/blazored-sessionstorage.js"></script>
22+
```
23+
24+
You will then need to register the local storage services with the service collection in your _startup.cs_ file.
2625

2726
```c#
2827
public void ConfigureServices(IServiceCollection services)
2928
{
30-
services.AddBlazoredSessionStorage();
29+
services.AddBlazoredLocalStorage();
3130
}
3231
```
3332

34-
### Usage
35-
36-
This is an example of using session storage in a .cshtml file
33+
### Usage (Blazor WebAssembly)
34+
To use Blazored.SessionStorage in Blazor WebAssembly, inject the `ILocalStorageService` per the example below.
3735

3836
```c#
39-
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
37+
@inject Blazored.SessionStorage.ILocalStorageService localStorage
4038

4139
@code {
4240

43-
protected override async Task OnInitAsync()
41+
protected override async Task OnInitializedAsync()
4442
{
45-
await sessionStorage.SetItemAsync("name", "John Smith");
46-
var name = await sessionStorage.GetItemAsync<string>("name");
43+
await localStorage.SetItemAsync("name", "John Smith");
44+
var name = await localStorage.GetItemAsync<string>("name");
4745
}
4846

4947
}
5048
```
5149

52-
If you are using Blazor (not Razor Components), you can choose to instead inject `Blazored.SessionStorage.ISyncStorageService` to opt into a synchronous API that allows you to avoid use of `async`/`await`. For either interface, the method names are the same.
50+
With Blazor WebAssembly you also have the option of a synchronous API, if your use case requires it. You can swap the `ILocalStorageService` for `ISyncStorageService` which allows you to avoid use of `async`/`await`. For either interface, the method names are the same.
5351

5452
```c#
55-
@inject Blazored.SessionStorage.ISyncStorageService sessionStorage
53+
@inject Blazored.SessionStorage.ISyncStorageService localStorage
5654

5755
@code {
5856

59-
protected override void OnInit()
57+
protected override void OnInitialized()
58+
{
59+
localStorage.SetItem("name", "John Smith");
60+
var name = localStorage.GetItem<string>("name");
61+
}
62+
63+
}
64+
```
65+
66+
### Usage (Blazor Server)
67+
68+
**NOTE:** Due to pre-rendering in Blazor Server you can't perform any JS interop until the `OnAfterRender` lifecycle method.
69+
70+
```c#
71+
@inject Blazored.SessionStorage.ILocalStorageService localStorage
72+
73+
@functions {
74+
75+
protected override async Task OnAfterRenderAsync()
6076
{
61-
sessionStorage.SetItem("name", "John Smith");
62-
var name = sessionStorage.GetItem<string>("name");
77+
await localStorage.SetItemAsync("name", "John Smith");
78+
var name = await localStorage.GetItemAsync<string>("name");
6379
}
6480

6581
}
6682
```
6783

6884
The APIs available are:
6985

70-
- asynchronous via `ISessionStorageService`:
86+
- asynchronous via `ILocalStorageService`:
7187
- SetItemAsync()
7288
- GetItemAsync()
7389
- RemoveItemAsync()

‎azure-pipelines.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ steps:
1111
- task: DotNetCoreInstaller@0
1212
displayName: 'Installing .NET Core SDK...'
1313
inputs:
14-
version: 3.0.100-preview7-012821
14+
version: 3.0.100-preview8-013656
1515

1616
- task: NuGetToolInstaller@0
1717
displayName: 'Installing Nuget Tools...'

‎samples/BlazorClientSide/BlazorClientSide.csproj‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
</PropertyGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview7.19365.7" />
15-
<PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview7.19365.7" PrivateAssets="all" />
16-
<PackageReference Include="Microsoft.AspNetCore.Blazor.DevServer" Version="3.0.0-preview7.19365.7" PrivateAssets="all" />
14+
<PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview8.19405.7" />
15+
<PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview8.19405.7" PrivateAssets="all" />
16+
<PackageReference Include="Microsoft.AspNetCore.Blazor.DevServer" Version="3.0.0-preview8.19405.7" PrivateAssets="all" />
1717
</ItemGroup>
1818

1919
<ItemGroup>

‎samples/BlazorClientSide/Pages/Index.razor‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
@page "/"
22
@inject ISessionStorageService sessionStorage
33

4-
<h1>Hello, world!</h1>
5-
6-
Welcome to your new app.
7-
8-
<SurveyPrompt Title="How is Blazor working for you?" />
4+
<h1>Blazored SessionStorage Sample</h1>
95

106
<hr class="mb-5" />
117

@@ -51,7 +47,7 @@ Welcome to your new app.
5147
int ItemsInSessionStorage { get; set; }
5248
string Name { get; set; }
5349

54-
protected override async Task OnInitAsync()
50+
protected override async Task OnInitializedAsync()
5551
{
5652
await GetNameFromSessionStorage();
5753
await GetSessionStorageLength();

‎samples/BlazorClientSide/Pages/Sync.razor‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
int ItemsInSessionStorage { get; set; }
4646
string Name { get; set; }
4747

48-
protected override void OnInit()
48+
protected override void OnInitialized()
4949
{
5050
GetNameFromSessionStorage();
5151
GetSessionStorageLength();

‎samples/BlazorClientSide/Shared/SurveyPrompt.razor‎

Lines changed: 0 additions & 15 deletions
This file was deleted.

‎samples/BlazorClientSide/_Imports.razor‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
@using System.Net.Http
2-
@using Microsoft.AspNetCore.Components.Layouts
32
@using Microsoft.AspNetCore.Components.Routing
43
@using Microsoft.JSInterop
54
@using BlazorClientSide

‎samples/BlazorClientSide/wwwroot/index.html‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
<head>
44
<meta charset="utf-8" />
55
<meta name="viewport" content="width=device-width" />
6-
<title>Blazored LocalStorage - Client-Side</title>
6+
<title>Blazored SessionStorage</title>
77
<base href="/" />
88
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
99
<link href="css/site.css" rel="stylesheet" />
1010
</head>
11-
<body>
12-
<app>Loading...</app>
13-
14-
<script src="_framework/blazor.webassembly.js"></script>
11+
<body>
12+
<app>Loading...</app>
13+
14+
<script src="_framework/blazor.webassembly.js"></script>
15+
<script src="_content/Blazored.SessionStorage/blazored-sessionstorage.js"></script>
1516
</body>
1617
</html>

‎samples/BlazorServerSide/Pages/Index.razor‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
@page "/"
22
@inject ISessionStorageService sessionStorage
33

4-
<h1>Hello, world!</h1>
5-
6-
Welcome to your new app.
7-
8-
<SurveyPrompt Title="How is Blazor working for you?" />
4+
<h1>Blazored SessionStorage Sample</h1>
95

106
<hr class="mb-5" />
117

0 commit comments

Comments
 (0)