@inherits LayoutComponentBase @inject ILogger _logger @inject Atomx.Admin.Client.Services.ILocalizationProvider LocalizationProvider @inject NavigationManager Navigation @* *@ @handler @* *@ @Body
程序遇到了未知错误!
@($"{ex.Message}{Environment.NewLine}{ex.StackTrace}")
@code { string handler = "Server"; private ErrorBoundary? _errorBoundary; private void ResetError(Exception ex) { _logger.LogError(ex, "未处理的异常。"); _errorBoundary?.Recover(); } private bool _open = true; private void ToggleDrawer() { _open = !_open; } private MenuDataItem[] MenuDatas; private AvatarMenuItem[] AvatarMenuItems => [ new() { Key = "center", IconType = "user", Option = "通知消息" }, new() { Key = "setting", IconType = "setting", Option = "修改资料" }, new() { IsDivider = true }, new() { Key = "logout", IconType = "logout", Option = "退出登录" } ]; public void HandleSelectUser(AntDesign.MenuItem item) { switch (item.Key) { case "center": Navigation.NavigateTo("/account/center"); break; case "setting": Navigation.NavigateTo("/account/settings"); break; case "logout": Navigation.NavigateTo("/logout"); break; } } protected async override Task OnInitializedAsync() { if (OperatingSystem.IsBrowser()) { handler = "Wasm"; } else { handler = "Server"; } var url = "/api/menu/tree"; var apiResult = await HttpService.Get>>(url); if (apiResult.Success) { if (apiResult.Data != null) { MenuDatas = apiResult.Data.ToArray(); StateHasChanged(); } } } protected override void OnInitialized() { if (LocalizationProvider != null) { LocalizationProvider.LanguageChanged += OnLanguageChanged; } } private void OnLanguageChanged(object? sender, string culture) { // ensure UI updates on the SyncContext; small delay to let cache update _ = InvokeAsync(async () => { await Task.Yield(); try { // Force route and page components to remount and re-render translations Navigation.NavigateTo(Navigation.Uri, forceLoad: false); } catch { } }); } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender && LocalizationProvider != null) { try { await LocalizationProvider.InitializeAsync(); } catch { } } } public void Dispose() { if (LocalizationProvider != null) { LocalizationProvider.LanguageChanged -= OnLanguageChanged; } } }