在页面之间传递复杂参数



我是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>
}

相关内容

  • 没有找到相关文章

最新更新