Передать сложный параметр между страницами - PullRequest
0 голосов
/ 27 марта 2020

Я новичок в Blazor Server, я пытаюсь передать класс с одной страницы на другую, очевидно, я не могу передать маршрут страницы, есть что-то вроде сеанса или viewbag на сервере Blazor?

Теперь я использую NavigationManager для перехода с одной страницы на другую

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

1 Ответ

0 голосов
/ 31 марта 2020

Одним из решений является использование словаря stati c для хранения глобальных данных,

использование Guid в качестве ключа для хранения вашего объекта класса

и передача Guid на другую страницу, используйте его для получить объект обратно.


Другой способ: использовать сервис Scoped для обмена данными / объектами

В Startup.cs

вы можете добавить свой собственный сервис Scoped :

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>
}
...