From fa30afb08c231f1507b89f0a0b81d1c552dcc97e Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 09:32:16 +0800 Subject: [PATCH 01/12] =?UTF-8?q?refactor:=20=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/BaseComponents/BootstrapBlazorRoot.razor | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRoot.razor b/src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRoot.razor index 21f32a9b79e..2b95fa23cf2 100644 --- a/src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRoot.razor +++ b/src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRoot.razor @@ -2,7 +2,8 @@ @namespace BootstrapBlazor.Components - + @ChildContent From 945c9526e2a8354a9ba915bcdf39c1b44dafaede Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 09:33:08 +0800 Subject: [PATCH 02/12] =?UTF-8?q?feat:=20Layout=20=E5=86=85=E7=BD=AE=20Err?= =?UTF-8?q?orLogger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Layout/Layout.razor | 5 ++- .../Components/Layout/Layout.razor.cs | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor b/src/BootstrapBlazor/Components/Layout/Layout.razor index 994cd0dc1a2..73a3ce5cf94 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor @@ -126,7 +126,10 @@ } else { - @HandlerMain() + + @HandlerMain() + } ; diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs index b0b09ba18ae..05e810df88f 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Routing; using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; using System.Reflection; namespace BootstrapBlazor.Components; @@ -452,12 +453,40 @@ public partial class Layout : IHandlerException, ITabHeader [Parameter] public object? Resource { get; set; } + /// + /// 获得/设置 是否开启全局异常捕获 默认 null 读取配置文件 EnableErrorLogger 值 + /// + [Parameter] + public bool? EnableErrorLogger { get; set; } + + /// + /// 获得/设置 是否显示 Error 提示弹窗 默认 null 使用 设置值 + /// + [Parameter] + public bool? ShowErrorLoggerToast { get; set; } + + /// + /// 获得/设置 错误日志 弹窗标题 默认 null + /// + [Parameter] + public string? ErrorLoggerToastTitle { get; set; } + + /// + /// 获得/设置 自定义错误处理回调方法 + /// + [Parameter] + public Func? OnErrorHandleAsync { get; set; } + /// /// 获得 登录授权信息 /// [CascadingParameter] private Task? AuthenticationStateTask { get; set; } + [Inject] + [NotNull] + private IOptionsMonitor? Options { get; set; } + [Inject, NotNull] private IServiceProvider? ServiceProvider { get; set; } @@ -470,6 +499,10 @@ public partial class Layout : IHandlerException, ITabHeader private ITabHeader? TabHeader => ShowTabInHeader ? this : null; + private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger; + + private bool _showToast => ShowErrorLoggerToast ?? Options.CurrentValue.ShowErrorLoggerToast; + /// /// /// From 041f6c27d1f45277917779ced2537728ac07a684 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 09:42:55 +0800 Subject: [PATCH 03/12] =?UTF-8?q?Revert=20"feat:=20Layout=20=E5=86=85?= =?UTF-8?q?=E7=BD=AE=20ErrorLogger"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 945c9526e2a8354a9ba915bcdf39c1b44dafaede. --- .../Components/Layout/Layout.razor | 5 +-- .../Components/Layout/Layout.razor.cs | 33 ------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor b/src/BootstrapBlazor/Components/Layout/Layout.razor index 73a3ce5cf94..994cd0dc1a2 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor @@ -126,10 +126,7 @@ } else { - - @HandlerMain() - + @HandlerMain() } ; diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs index 05e810df88f..b0b09ba18ae 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Routing; using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Logging; using System.Reflection; namespace BootstrapBlazor.Components; @@ -453,40 +452,12 @@ public partial class Layout : IHandlerException, ITabHeader [Parameter] public object? Resource { get; set; } - /// - /// 获得/设置 是否开启全局异常捕获 默认 null 读取配置文件 EnableErrorLogger 值 - /// - [Parameter] - public bool? EnableErrorLogger { get; set; } - - /// - /// 获得/设置 是否显示 Error 提示弹窗 默认 null 使用 设置值 - /// - [Parameter] - public bool? ShowErrorLoggerToast { get; set; } - - /// - /// 获得/设置 错误日志 弹窗标题 默认 null - /// - [Parameter] - public string? ErrorLoggerToastTitle { get; set; } - - /// - /// 获得/设置 自定义错误处理回调方法 - /// - [Parameter] - public Func? OnErrorHandleAsync { get; set; } - /// /// 获得 登录授权信息 /// [CascadingParameter] private Task? AuthenticationStateTask { get; set; } - [Inject] - [NotNull] - private IOptionsMonitor? Options { get; set; } - [Inject, NotNull] private IServiceProvider? ServiceProvider { get; set; } @@ -499,10 +470,6 @@ public partial class Layout : IHandlerException, ITabHeader private ITabHeader? TabHeader => ShowTabInHeader ? this : null; - private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger; - - private bool _showToast => ShowErrorLoggerToast ?? Options.CurrentValue.ShowErrorLoggerToast; - /// /// /// From fd4464a482048ee2e57f992f93d83065ef994dbc Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 10:38:15 +0800 Subject: [PATCH 04/12] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs b/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs index 2a954f2c909..f93ca2fe45b 100644 --- a/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs +++ b/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs @@ -97,7 +97,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) }; /// - /// 由接口调用 + /// 由实现 组件实现类调用 /// /// /// From 5afefb8a29a2e3aff6c5205c0f8dec35a95a9d9d Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 10:38:35 +0800 Subject: [PATCH 05/12] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazorErrorBoundary.cs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs b/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs index f84021837c2..f89dd4ff51b 100644 --- a/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs +++ b/src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs @@ -68,19 +68,16 @@ protected override async Task OnErrorAsync(Exception exception) /// protected override void BuildRenderTree(RenderTreeBuilder builder) { -#if DEBUG - // DEBUG 模式下显示异常堆栈信息到 UI 页面方便开发人员调试 - if (OnErrorHandleAsync == null) + var ex = CurrentException ?? _exception; + if (ex != null) { - var ex = CurrentException ?? _exception; - if (ex != null) - { - _exception = null; - builder.AddContent(0, ExceptionContent(ex)); - } + _exception = null; + builder.AddContent(0, ExceptionContent(ex)); + } + else + { + builder.AddContent(1, ChildContent); } -#endif - builder.AddContent(1, ChildContent); } private Exception? _exception = null; From 81f9f6849c6e46d73477e7029a72a5f8b5581322 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 10:38:48 +0800 Subject: [PATCH 06/12] =?UTF-8?q?Reapply=20"feat:=20Layout=20=E5=86=85?= =?UTF-8?q?=E7=BD=AE=20ErrorLogger"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 041f6c27d1f45277917779ced2537728ac07a684. --- .../Components/Layout/Layout.razor | 5 ++- .../Components/Layout/Layout.razor.cs | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor b/src/BootstrapBlazor/Components/Layout/Layout.razor index 994cd0dc1a2..73a3ce5cf94 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor @@ -126,7 +126,10 @@ } else { - @HandlerMain() + + @HandlerMain() + } ; diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs index b0b09ba18ae..05e810df88f 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Routing; using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; using System.Reflection; namespace BootstrapBlazor.Components; @@ -452,12 +453,40 @@ public partial class Layout : IHandlerException, ITabHeader [Parameter] public object? Resource { get; set; } + /// + /// 获得/设置 是否开启全局异常捕获 默认 null 读取配置文件 EnableErrorLogger 值 + /// + [Parameter] + public bool? EnableErrorLogger { get; set; } + + /// + /// 获得/设置 是否显示 Error 提示弹窗 默认 null 使用 设置值 + /// + [Parameter] + public bool? ShowErrorLoggerToast { get; set; } + + /// + /// 获得/设置 错误日志 弹窗标题 默认 null + /// + [Parameter] + public string? ErrorLoggerToastTitle { get; set; } + + /// + /// 获得/设置 自定义错误处理回调方法 + /// + [Parameter] + public Func? OnErrorHandleAsync { get; set; } + /// /// 获得 登录授权信息 /// [CascadingParameter] private Task? AuthenticationStateTask { get; set; } + [Inject] + [NotNull] + private IOptionsMonitor? Options { get; set; } + [Inject, NotNull] private IServiceProvider? ServiceProvider { get; set; } @@ -470,6 +499,10 @@ public partial class Layout : IHandlerException, ITabHeader private ITabHeader? TabHeader => ShowTabInHeader ? this : null; + private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger; + + private bool _showToast => ShowErrorLoggerToast ?? Options.CurrentValue.ShowErrorLoggerToast; + /// /// /// From e0ca487dece42b3bf11fbd8498c32b1f1354efc6 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 30 May 2025 10:48:25 +0800 Subject: [PATCH 07/12] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=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/LayoutTest.cs | 37 +++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/test/UnitTest/Components/LayoutTest.cs b/test/UnitTest/Components/LayoutTest.cs index 6a047aa861a..ed87fb225a9 100644 --- a/test/UnitTest/Components/LayoutTest.cs +++ b/test/UnitTest/Components/LayoutTest.cs @@ -528,13 +528,14 @@ public async Task OnUpdateAsync_Ok() } [Fact] - public void HandlerException_Ok() + public void IHandlerException_Ok() { var cut = Context.RenderComponent(pb => { pb.Add(a => a.EnableErrorLogger, true); pb.AddChildContent(pb => { + // 按钮触发异常 pb.Add(a => a.Main, new RenderFragment(builder => { builder.OpenComponent