【问题标题】:Blazor ProtectedSessionStorage object NULLBlazor ProtectedSessionStorage 对象 NULL
【发布时间】:2021-12-21 03:32:08
【问题描述】:

我在 ProtectedSessionStorage 上创建了一个帮助类来读取/写入数据

using Microsoft.AspNetCore.ProtectedBrowserStorage;
public class SessionObjectHelper
{
    [Inject] private ProtectedSessionStorage ProtectedSessionStore { get; set; }
    
    public async Task<string> GetTestProperty()
    {
        var value = await ProtectedSessionStore.GetAsync<string>("TestProperty") ?? string.Empty;

        return value;
    }
    
    public async Task SetTestProperty(string value)
    {
        await ProtectedSessionStore.SetAsync("TestProperty", value);
    }       
}

如果我从一个组件调用这些方法中的任何一个,如下图所示,ProtectedSessionStore 始终为 NULL

[Inject] private SessionObjectHelper SessionObjectHelper { get; set; }

protected override async Task OnInitializedAsync()
{
    var testProperty= await SessionObjectHelper.GetTestProperty();
}

【问题讨论】:

    标签: c# blazor session-storage


    【解决方案1】:

    您的SessionObjectHelper 类应该声明一个构造函数来获取注入的服务,而不是使用[Inject] 属性,例如

        public class SessionObjectHelper
        {
            private ProtectedSessionStorage storage;
    
            public SessionObjectHelper(ProtectedSessionStorage storage)
            {
                    this.storage = storage;
            }
    

    [Inject] 属性旨在用于 Razor 组件,而不是常规类。

    然后你可以使用

    [Inject] public SessionObjectHelper SessionObjectHelper { get; set; }
    

    在您的组件中。请注意,我已更改为 public - 如果它是私有的,则运行时将无法查看/设置它。

    【讨论】:

      猜你喜欢
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      相关资源
      最近更新 更多