Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
@namespace BootstrapBlazor.Components

<CascadingValue Value="this" IsFixed="true">
<ErrorLogger EnableErrorLogger="_enableErrorLoggerValue" ShowToast="_showToast" ToastTitle="@ToastTitle" OnErrorHandleAsync="OnErrorHandleAsync!">
<ErrorLogger EnableErrorLogger="_enableErrorLoggerValue" ShowToast="_showToast" ToastTitle="@ToastTitle"
OnErrorHandleAsync="OnErrorHandleAsync">
@ChildContent

<Dialog></Dialog>
Expand Down
5 changes: 4 additions & 1 deletion src/BootstrapBlazor/Components/Layout/Layout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,10 @@
}
else
{
@HandlerMain()
<ErrorLogger EnableErrorLogger="@_enableErrorLoggerValue" ShowToast="@_showToast" ToastTitle="@ErrorLoggerToastTitle"
OnErrorHandleAsync="OnErrorHandleAsync">
@HandlerMain()
</ErrorLogger>
}
</main>;

Expand Down
33 changes: 33 additions & 0 deletions src/BootstrapBlazor/Components/Layout/Layout.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -452,12 +453,40 @@ public partial class Layout : IHandlerException, ITabHeader
[Parameter]
public object? Resource { get; set; }

/// <summary>
/// 获得/设置 是否开启全局异常捕获 默认 null 读取配置文件 EnableErrorLogger 值
/// </summary>
[Parameter]
public bool? EnableErrorLogger { get; set; }

/// <summary>
/// 获得/设置 是否显示 Error 提示弹窗 默认 null 使用 <see cref="BootstrapBlazorOptions.ShowErrorLoggerToast"/> 设置值
/// </summary>
[Parameter]
public bool? ShowErrorLoggerToast { get; set; }

/// <summary>
/// 获得/设置 错误日志 <see cref="Toast"/> 弹窗标题 默认 null
/// </summary>
[Parameter]
public string? ErrorLoggerToastTitle { get; set; }

/// <summary>
/// 获得/设置 自定义错误处理回调方法
/// </summary>
[Parameter]
public Func<ILogger, Exception, Task>? OnErrorHandleAsync { get; set; }

/// <summary>
/// 获得 登录授权信息
/// </summary>
[CascadingParameter]
private Task<AuthenticationState>? AuthenticationStateTask { get; set; }

[Inject]
[NotNull]
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }

[Inject, NotNull]
private IServiceProvider? ServiceProvider { get; set; }

Expand All @@ -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;

/// <summary>
/// <inheritdoc/>
/// </summary>
Expand Down