Код: Выделить всё
@Localizer["Please wait, we are authorizing you..."]
< /code>
У меня есть mainlayout < /code> в качестве макета по умолчанию. Вот его структура: < /p>
@inherits LayoutComponentBase
...
Authentication is required, click sign in
< /code>
Как только пользователь будет аутентифицирован, мне нужно проверить данные их профиля и, основываясь на этом, показать диалог Mudblazor. < /p>
Итак, я реализовал Логика onafterrenderasync
Код: Выделить всё
[CascadingParameter] private Task AuthState { get; set; } = default!;
private IDialogReference? _dialogRef;
private bool _dialogOpened;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
// At this point, the user might not be authenticated yet since MainLayout is the default layout
await DoUiThings();
StateHasChanged();
}
var user = (await AuthState).User;
if (user.Identity is { IsAuthenticated: true } && !_dialogOpened) // Open dialog only if the user is authenticated and the dialog hasn't been opened yet
{
await ShowDialogIfAuthenticatedAsync();
}
}
private async Task ShowDialogIfAuthenticatedAsync()
{
_dialogRef = await DialogService.ShowAsync("Fake Title", parameters, dialogOptions);
_dialogOpened = true;
var resultDialog = await _dialogRef.Result;
if (resultDialog != null && !resultDialog.Canceled)
{
Console.WriteLine("LOG: Dialog closed with OK");
}
else
{
Console.WriteLine("LOG: Dialog canceled");
}
}
< /code>
Проблема: < /h2>
[list]
[*] Метод ShowdialogifauthenticatedAsync < /code> выполняется правильно. < /li>
Диалог появляется, как и ожидалось. < /li>
Однако через несколько секунд он закрывается автоматически, и я не понимаю, почему. Inside Mainlayout
[/list]
Как я могу сохранить диалог Открыть внутри mainlayout без автоматического закрытия?
Подробнее здесь: https://stackoverflow.com/questions/794 ... mainlayout