【发布时间】:2021-06-03 01:36:19
【问题描述】:
我看到很多以这种方式工作的示例,但这对我不起作用。有什么帮助吗?
Program.cs
...
using Blazored.LocalStorage;
using TestFullPage.Classes;
namespace TestFullPage
{
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddBlazoredLocalStorage();
builder.Services.AddSingleton<Session>();
await builder.Build().RunAsync();
}
}
}
Session.cs
...
using Microsoft.AspNetCore.Components;
using Blazored.LocalStorage;
namespace TestFullPage.Classes
{
public class Session
{
[Inject]
public ILocalStorageService LocalStorage { get; set; }
public void updateLocalStorage()
{
LocalStorage.SetItemAsync("test", "123");
}
}
}
Index.razor
@page "/"
@inject Session sesssion
<button @onclick="() =>Write()">Write to LocalStorage</button>
@code {
public void Write() {
sesssion.updateLocalStorage();
}
}
未处理的异常渲染组件:对象引用未设置为对象的实例。 System.NullReferenceException: 对象引用未设置到实例 ---> LocalStorage.SetItemAsync("test", "123");
【问题讨论】:
-
你的代码在我的机器上工作得很好你能发布你的组件的完整代码和'updateLocalStorage'的调用者吗?还有任何理由将课堂会话用作单身人士吗?
-
好吧..我没有把所有的原始代码都放在不让线程沉重和难以理解的情况下,但是这个类有很多函数需要成为一个singleTon。即使在 SingleTon 课程中,这对您也有用吗?我稍后会为您更新电话...需要为此创建一个更好的样板...因为我有一个调用此方法的组件。但请耐心等待!谢谢!
-
@yasseros,刚刚更新了通话。