Blazor Server如何跨多个选项卡和刷新持久保存数据

Blazor Server How to persist data across multiple tabs and refreshes(Blazor Server如何跨多个选项卡和刷新持久保存数据)
本文介绍了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如何跨多个选项卡和刷新持久保存数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)