Передача данных с одной страницы Razor на другую без использования параметров маршрута - PullRequest
0 голосов
/ 12 июля 2020

У меня есть страница add, которая добавит элемент в базу данных на OnValidSubmit, а затем перенаправит на страницу list. На странице list я хочу показать сообщение об успешном завершении, например: « элемент добавлен ».

Я хочу показать сообщение об успехе «элемент добавлен» только один раз . Если пользователь обновит страницу, она исчезнет. Таким образом, параметр маршрута, который передается через URL, кажется неправильным, поскольку он переживет обновления.

Итак, как я могу однократно передать флаг «показать сообщение об успешном завершении» и, возможно, некоторые дополнительные данные, такие как имя элемента?

Подсказка: я использую серверную часть Blazor

1 Ответ

3 голосов
/ 12 июля 2020

Когда вы переходите с одной страницы на другую, все состояние на странице теряется.

Что не потеряно, так это контейнер зависимостей с заданной областью. Итак, если вы создаете объект, который регистрируете с помощью services.AddScoped<MyStateObject>(), вы сможете получить доступ к этому экземпляру объекта во всем приложении - не только на страницах, но и в нескольких компонентах, просто введя его

@inject MyStateObject State

@if (!string.IsNullOrEmpty(State.Message))
{
  <div class="alert alert-success">@State.Message</div>
}

@code
{
  protected override OnAfterRender(bool firstRender)
  {
    State.Message = null;
  }
}
...