blazor 配合 sweet alert 实现弹窗询问确认

blazor 配合 sweet alert 实现弹窗询问确认

使用JavaScript互操作(JS Interop)来调用JavaScript代码,并且可以在JavaScript弹窗确认后回调到Blazor的C#代码。

前端部分

1
2
3
4
5
6
7
8
9
10
11
window.showConfirmDialog = async function (title, text, confirmButtonText, cancelButtonText) {
const { value: confirmed } = await Swal.fire({
title: title,
text: text,
icon: 'question',
showCancelButton: true,
confirmButtonText: confirmButtonText,
cancelButtonText: cancelButtonText
});
return confirmed ?? false; // 注意:不要返回除了布尔值以外的值
}

window.showConfirmDialog 必须返回一个明确的布尔值,不可以是 null, undefined

后端部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@page "/example"
@inject IJSRuntime JS

<button @onclick="OnButtonClick">Click Me</button>

@code {
private async Task OnButtonClick()
{
// 调用JavaScript函数并等待结果
bool? confirmed = await JS.InvokeAsync<bool?>("showConfirmDialog",
"Are you sure?",
"Do you want to proceed?",
"Yes",
"No");

if (confirmed == true)
{
// 用户点击了确认,现在可以调用后台逻辑
await ConfirmAction();
}
else
{
// 用户点击了取消或其他情况
}
}

private async Task ConfirmAction()
{
// 这里是当用户确认后的逻辑
// ...
}
}

blazor 配合 sweet alert 实现弹窗询问确认
https://taylorandtony.github.io/2025/01/23/blazor-confirm-popup/
作者
TaylorAndTony
发布于
2025年1月23日
许可协议