首页 > 解决方案 > 整个页面的 OnChange:Blazor

问题描述

如果用户想要离开页面并且不保存 blazor 中的更改,我想要一个警报。

如何以高性能检测更改(不想检查数据库)?

在 blazor 中,@bind 值会自动更新。我想有一项服务已经检查了一些变化。

我怎样才能得到这些信息?

标签: c#htmlonchangeblazor

解决方案


您可以使用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/


推荐阅读