如何仅在当前浏览器会话上而不是在所有会话上更改此属性



这是测试类:

namespace ScopedTest.Data
{
public class TestingClass
{
public static string? Name { get; set; } = "HAHA";
}
}

这是我合作的班级:

@using ScopedTest.Data
@inject TestingClass Name
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<input type="text" @bind-value=@Name />
<p> @Name </p>

当我在两种不同的浏览器上打开这个网页时(chrome和firefox用于exmaple(,当我在chrome中更改名称,然后在firefox上刷新时,名称也会在firefox上更新,我不知道它为什么或如何这样做,这个测试的目的是尝试只保留浏览器上的数据,而不会在刷新时更改。有什么建议吗?

您需要注册具有"scoped"生存期的服务。

builder.Services.AddScoped<TestingClass>();

对于Singleton服务,您可以为所有会话获得相同的实例。

对于Scoped服务,每个会话可以获得不同的实例。

https://chrissainty.com/service-lifetimes-in-blazor/

最新更新