首页 > 解决方案 > 在不使用路由参数的情况下将数据从一个 Razor 页面传递到另一个页面

问题描述

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

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

那么,我怎样才能一次性传递“显示成功消息”标志以及一些附加数据,例如项目名称?

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

标签: c#blazorblazor-server-side

解决方案


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

没有丢失的是作用域依赖容器。因此,如果您创建一个您注册的对象,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;
  }
}

推荐阅读