c# - 整个页面的 OnChange:Blazor
问题描述
如果用户想要离开页面并且不保存 blazor 中的更改,我想要一个警报。
如何以高性能检测更改(不想检查数据库)?
在 blazor 中,@bind 值会自动更新。我想有一项服务已经检查了一些变化。
我怎样才能得到这些信息?
解决方案
您可以使用IsModified()
来自EditContext
:
@if (_editContext.IsModified())
{
<p>You have made changes. Any unsaved changes will be lost!</p>
}
<EditForm EditContext="_editContext" OnValidSubmit="OnValidSumit">
<DataAnnotationsValidator />
<ValidationSummary />
<InputText @bind-Value="Model.Something" />
<button type="submit">Add</button>
</EditForm>
@code {
public Model Model { get; set; } = new Model();
private EditContext _editContext;
protected override void OnInitialized()
{
_editContext = new EditContext(Model);
}
}
为了检查用户是否想要导航到另一个页面,这里有一篇很棒的文章:https ://chrissinty.com/an-in-depth-look-at-routing-in-blazor/ 和:https://blazor- university.com/routing/detecting-navigation-events/
推荐阅读
- postgresql - pgAdmin 看不到 pgAgent 作业调度程序
- security - 在 vuex state + persistedState 插件中存储令牌是否安全?
- bash - 在集群范围的初始化脚本中从 dbfs 复制文件
- java - 如何在不使用 @PropertySources 注释的情况下使用 @ConfigurationProperties(prefix="foo.bar") 获取前缀属性
- amazon-web-services - 使用快照从单节点 Redshift 集群调整为两节点
- c# - C# Regex - 匹配某些字符,后跟数字/标识符
- javascript - Javascript代码在点击时不显示菜单
- javascript - 如何使用fabricjs计算画布边界内所有文本对象的面积?
- javascript - Axios 的 JavaScript。我需要通过 setInterval js 从客户端每 100 毫秒检查一次服务器
- oracle - PL/SQL 函数体从视图返回 SQL 查询