本文介绍了Blazor Server如何跨多个选项卡和刷新持久保存数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写需要为用户保存数据的Blazor Server应用程序。

我已经尝试了以下内容/以下内容不符合要求:

  • 会话存储-因为它的作用域是浏览器选项卡,所以数据在刷新时消失/不在新选项卡上。
  • 本地存储-跨多个选项卡工作并刷新,但会留在以后访问站点时使用(我不希望数据在多次访问期间保持不变)
  • 有作用域的AppState方法-再次基于每个选项卡的每个电路。

我有一些想法,但不确定如何实施/是否是好想法:

  • 使用本地存储,但可以在客户端断开连接时以某种方式将其清除,或者在本地存储中添加时间标记,并且只允许保持x时间。
  • 以某种方式使用Cookie,可能是通过:Creating and Reading Cookies on Blazor Server Side

除此之外,关于如何实现这一点,我没有任何其他好的想法,因此欢迎任何想法/建议。

推荐答案

嗯,这对我来说不是独创的,但是只要登录用户连接,我就是这样为他们保留租户的。

public class GlobalService
{
    public event Action<PropertyChangedEventArgs> PropertyChanged;

    Subscriber _Tenant;
    public Subscriber Tenant
    {
        get
        {
            return _Tenant;
        }
        set
        {
            if (!object.Equals(_Tenant, value))
            {
                var args = new PropertyChangedEventArgs() { Name = "Tenant", NewValue = value, OldValue = _Tenant, IsGlobal = true };
                _Tenant = value;
                PropertyChanged?.Invoke(args);
            }
        }
    }
}

public class PropertyChangedEventArgs
{
    public string Name { get; set; }
    public object NewValue { get; set; }
    public object OldValue { get; set; }
    public bool IsGlobal { get; set; }
}

我在ConfigureServices中注册它,就像这样

services.TryAddScoped<GlobalService>();

这篇关于Blazor Server如何跨多个选项卡和刷新持久保存数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 11:41