我是Blazor服务器的新手,我正试图将一个类从一个页面传递到另一个页面,显然我无法通过页面的路由,Blazor Server中有类似session或viewbag的东西吗?
现在我使用NavigationManager从一个页面传递到另一个
NavigationManager.NavigateTo("/loginsubscription", true);
一种解决方案是使用静态字典来存储全局数据,
使用Guid作为密钥来存储类对象
并将Guid传递给另一个页面,使用它来取回对象。
另一种方式,使用作用域服务共享数据/对象
在Startup.cs 中
您可以添加自己的"范围界定"服务:
public void ConfigureServices(IServiceCollection services)
{
......
services.AddScoped<MyScopeService>();
}
public class MyScopeService : Dictionary<string,object>
{
}
源页面:
@inject NavigationManager nav
@inject MyScopeService mss
@code{
void GoAnotherPage()
{
mss["mydata"] = new object[] { "hello", "world", 12345 };
nav.NavigateTo("/Test_Controls",false);//do not relead
}
}
<button @onclick="GoAnotherPage">GoAnotherPage</button>
目标页面:
@page "/Test_Controls"
@inject MyScopeService mss
@{
object mydata;
if (!mss.TryGetValue("mydata", out mydata))
{
<div>Oops , session expipred, please try again.</div>
return;
}
}
@foreach (object obj in (object[])mydata)
{
<div> item is @obj </div>
}