OnChange для всей страницы: Blazor - PullRequest
1 голос
/ 22 апреля 2020

Мне нужно уведомление, если пользователь хочет покинуть страницу и не сохраняет изменения в Blazor.

Как я могу обнаружить изменение с высокой производительностью (не хочу проверять базу данных)?

В Blazor значения @bind обновляются автоматически. Я предполагаю, что есть служба, которая проверила уже что-то изменилось.

Как я могу получить эту информацию?

1 Ответ

2 голосов
/ 22 апреля 2020

Вы можете использовать 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://chrissainty.com/an-in-depth-look-at-routing-in-blazor/ и: https://blazor-university.com/routing/detecting-navigation-events/

...