c# - 在不使用路由参数的情况下将数据从一个 Razor 页面传递到另一个页面
问题描述
我有一个页面add
,它将向数据库添加一个项目,OnValidSubmit
然后重定向到一个页面list
。在页面上,list
我想显示一条成功消息,例如“已添加项目”。
我只想显示一次成功消息“已添加项目”。如果用户刷新页面,它就会消失。因此,通过 传递的路由参数URL
似乎是错误的,因为这将在刷新后继续存在。
那么,我怎样才能一次性传递“显示成功消息”标志以及一些附加数据,例如项目名称?
提示:我正在使用 Blazor 服务器端
解决方案
当您从一个页面导航到另一个页面时,页面中的所有状态都会丢失。
没有丢失的是作用域依赖容器。因此,如果您创建一个您注册的对象,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;
}
}
推荐阅读
- angular - 如何将最初打开的扩展面板设置为默认关闭?
- corda - Corda - 流量超时
- javascript - Javascript - 视频自动播放问题
- javascript - AngularJS 在指令标签之间传递 html 内容
- image - 查找车牌内的旋转角度
- python - 熊猫:从熊猫表中的日期中减去当前日期
- angular - 在 Angular5 中使用 HttpClient 发布时出现 401 Unauthorized - CORS 来源错误
- design-patterns - 哪种类型的实现会更适合服务层?
- azure - Azure WebRole 粘性负载平衡
- kubernetes - istio-proxy 访问日志是什么意思?