在页面之间传递复杂参数

时间:2020-03-26 22:35:10

标签: blazor blazor-server-side

我是Blazor Server的新手,我正试图将一个类从一个页面传递到另一个页面,显然我无法传递页面的路由,blazor服务器中是否有会话或viewbag之类的东西? / p>

现在我使用NavigationManager从一页传递到另一页

          NavigationManager.NavigateTo("/loginsubscription", true);

1 个答案:

答案 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>
}