本文介绍了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如何跨多个选项卡和刷新持久保存数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!