From fca60d966719369b2e658fcafc90f8250881e66e Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Mon, 10 Mar 2025 14:15:34 +0800 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=AF=B9=E8=AF=9D=E6=A1=86=E6=89=A9=E5=B1=95=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/DialogServiceExtensions.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/BootstrapBlazor/Extensions/DialogServiceExtensions.cs b/src/BootstrapBlazor/Extensions/DialogServiceExtensions.cs index fc3f611e036..38468f9d57a 100644 --- a/src/BootstrapBlazor/Extensions/DialogServiceExtensions.cs +++ b/src/BootstrapBlazor/Extensions/DialogServiceExtensions.cs @@ -226,4 +226,22 @@ public static async Task ShowValidateFormDialog(this DialogService s configureOption?.Invoke(option); await service.Show(option, dialog); } + + /// + /// 显示异常信息对话框扩展方法 + /// + /// + /// + /// + /// + public static async Task ShowErrorHandlerDialog(this DialogService service, RenderFragment fragment, Dialog? dialog = null) + { + var option = new DialogOption + { + Title = "Error", + IsScrolling = true, + BodyTemplate = fragment + }; + await service.Show(option, dialog); + } } From c5b07de424e7fb8a95a1f65d987212c6c0d5bdca Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Mon, 10 Mar 2025 14:16:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=E6=9B=B4=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Tab/Tab.razor.cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/BootstrapBlazor/Components/Tab/Tab.razor.cs b/src/BootstrapBlazor/Components/Tab/Tab.razor.cs index 86006007f7a..e3db268a989 100644 --- a/src/BootstrapBlazor/Components/Tab/Tab.razor.cs +++ b/src/BootstrapBlazor/Components/Tab/Tab.razor.cs @@ -306,6 +306,9 @@ public partial class Tab : IHandlerException [NotNull] private IIconTheme? IconTheme { get; set; } + [Inject, NotNull] + private DialogService? DialogService { get; set; } + private ConcurrentDictionary LazyTabCache { get; } = new(); private bool HandlerNavigation { get; set; } @@ -792,9 +795,7 @@ private RenderFragment RenderTabItemContent(TabItem item) => builder => if (item.IsActive) { - var content = _errorContent ?? item.ChildContent; - builder.AddContent(0, content); - _errorContent = null; + builder.AddContent(0, item.ChildContent); if (IsLazyLoadTabItem) { LazyTabCache.AddOrUpdate(item, _ => true, (_, _) => true); @@ -806,19 +807,12 @@ private RenderFragment RenderTabItemContent(TabItem item) => builder => } }; - private RenderFragment? _errorContent; - /// /// HandlerException 错误处理方法 /// /// /// - public virtual Task HandlerException(Exception ex, RenderFragment errorContent) - { - _errorContent = errorContent(ex); - StateHasChanged(); - return Task.CompletedTask; - } + public Task HandlerException(Exception ex, RenderFragment errorContent) => DialogService.ShowErrorHandlerDialog(errorContent(ex)); private IEnumerable? _menuItems; private MenuItem? GetMenuItem(string url) From 4fdf11c745e677bdcba6f41015285b43b0a6b3b0 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Mon, 10 Mar 2025 14:23:49 +0800 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/ErrorLoggerTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/UnitTest/Components/ErrorLoggerTest.cs b/test/UnitTest/Components/ErrorLoggerTest.cs index 3baa1848598..ae3587bbd08 100644 --- a/test/UnitTest/Components/ErrorLoggerTest.cs +++ b/test/UnitTest/Components/ErrorLoggerTest.cs @@ -122,7 +122,7 @@ public void OnErrorHandleAsync_Tab() cut.Contains("errorLogger-click"); var button = cut.Find("button"); button.TriggerEvent("onclick", EventArgs.Empty); - cut.Contains("
TimeStamp:"); + cut.Contains("
TimeStamp:"); } [Fact]