【发布时间】:2021-12-06 04:27:31
【问题描述】:
我有一个执行 while 循环并执行一些请求的脚本
<p>Result @Content</p>
private string Content;
public async Task StartAsync()
{
while(!taskCanel) {
Content = await webSocket.SendAsync(..);
StateHasChanged();
await Task.Delay(15000);
}
}
但是每当我使用导航栏切换另一个页面然后返回到此页面时,它都会重置所有内容,就像它创建我的剃须刀页面的新实例一样。
如何在不丢失所有状态和内容的情况下导航到页面?
【问题讨论】:
-
它不会“重置”任何东西。 Web 应用程序中没有隐式存储。除非您明确存储,否则不会保留任何内容
-
@PanagiotisKanavos 创建一个 blazor 模板并运行它,然后在导航栏之间切换,您会看到它将所有内容重置为默认值
-
同样,没有任何内容被重置,因为除非您明确保存,否则不会保留任何内容。每个导航本质上都会创建一个新表单。即使在 Windows 窗体应用程序中,关闭窗体并打开新窗体也不会保留旧窗体的状态,除非您明确将其保存在某处
-
@PanagiotisKanavos 在 winforms 中,您可以隐藏和显示表单,除 nvm 外,所有内容都将保留。我怎么能做一些东西而不是保留一切的navigationmanager?
-
但你很少这样做......我希望。表单关闭按钮实际上关闭了表单,它并没有隐藏它。无论如何,在 Web 应用程序或 SPA 中,当您导航时,您将关闭旧页面并打开新页面。这些不是表格。如果您想保留信息,则必须存储它。
标签: c# asp.net-core blazor