将数据从一个Razor页面传递到另一页面而不使用路由参数

时间:2020-07-12 18:16:24

标签: c# blazor blazor-server-side

我有一个页面add,它将在OnValidSubmit上向数据库添加一个项目,然后重定向到页面list。我想在页面list上显示一条成功消息,例如“ 添加项目”。

我只想显示一次成功消息“已添加项目” 。如果用户刷新页面,则该页面将消失。因此,通过URL传递的route参数似乎是错误的事情,因为它将在刷新后继续存在。

那么,我如何一次传递“显示成功消息”标志以及也许其他一些数据,例如物品名称?

提示:我正在使用Blazor服务器端

1 个答案:

答案 0 :(得分:3)

当您从一页导航到另一页时,该页内的所有状态都会丢失。

没有丢失的是范围依赖性容器。因此,如果您创建一个向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;
  }
}