我是Blazor Server的新手,我正试图将一个类从一个页面传递到另一个页面,显然我无法传递页面的路由,blazor服务器中是否有会话或viewbag之类的东西? / p>
现在我使用NavigationManager从一页传递到另一页
NavigationManager.NavigateTo("/loginsubscription", true);
答案 0 :(得分:-1)
一种解决方案是使用静态字典存储全局数据,
使用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>
}