Blazor Server: дублирующиеся уведомления. Проблема при обновлении AppliceState ErrormessageC#

Место общения программистов C#
Ответить
Anonymous
 Blazor Server: дублирующиеся уведомления. Проблема при обновлении AppliceState Errormessage

Сообщение Anonymous »

У меня есть уведомление о дублировании при изменении AppState.errormessage, таких как AppState.errormessage = «Некоторая ошибка».
Когда я нажимаю кнопку, где я устанавливаю значение, я получаю notificaiton два раза < /p>
mainlayout < /p>
public partial class MainLayout : IDisposable
{
[Inject]
public required INotificationService Notice { get; set; }

[CascadingParameter]
public ApplicationState? AppState { get; set; }

protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender && AppState is not null)
{
AppState.OnNotification += OnNotificationHandler;
}
await base.OnAfterRenderAsync(firstRender);
}

public void Dispose()
{
if (AppState is not null)
{
AppState.OnNotification -= OnNotificationHandler;
}
}

private void OnNotificationHandler()
{
InvokeAsync(ShowNotification);
}

private async Task ShowNotification()
{
if (AppState is not null)
{
await Notice.Error(new NotificationConfig()
{
Message = AppState.ErrorMessage
});
}
}
}
< /code>
AppliceState < /p>
public class ApplicationState
{
private string _errorMessage = string.Empty;

public string ErrorMessage
{
get => _errorMessage;
set
{
if (!string.Equals(_errorMessage, value) && !string.IsNullOrWhiteSpace(value))
{
_errorMessage = value;
ShowError();
}
else
{
_errorMessage = value;
}
}
}

public event Action? OnNotification;

public void ShowError()
{
OnNotification?.Invoke();
_errorMessage = string.Empty;
}
}
< /code>
Что я сделал < /p>

Реализованный флаг уведомлений < /li>
Очистить ошибку Сообщение < /li>
Введенное управление подпиской на события. < /li>
< /ul>
Может быть, проблема с Rendermode? < /p>





















Подробнее здесь: https://stackoverflow.com/questions/794 ... state-erro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»