Blazor 怎么实现一个确认对话框

admin 百科 12
Blazor中可通过TaskCompletionSource实现异步确认对话框,无需JS互操作;新建ConfirmService管理状态并暴露Show方法,调用方await即可等待用户选择,UI层用条件渲染和CSS实现弹窗。

Blazor 怎么实现一个确认对话框-第1张图片-佛山资讯网

Blazor 中没有内置的确认对话框(如 JavaScript 的 confirm()),但可以通过组件化方式轻松实现一个可复用、支持异步等待的确认对话框。核心思路是:用一个状态管理弹窗显示/隐藏,配合回调或 TaskCompletionSource 实现“等待用户点击确定/取消”的同步语义。

TaskCompletionSource 实现真异步确认

这是最推荐的方式,让调用方像写 await ShowConfirm("删除?") 一样自然。

  • 新建一个 ConfirmService.razor(作为服务组件,通常放在 Shared/ 下)
  • 内部维护一个 TaskCompletionSource<bool></bool>,暴露 Show(string title, string message) 方法
  • 点击“确定”时 .SetResult(true),点击“取消”时 .SetResult(false)
  • 在父组件中注入该服务,调用 await confirmService.Show(...) 即可阻塞后续逻辑直到用户选择

在页面中使用示例

比如在某个按钮点击事件里:

@inject ConfirmService ConfirmService
<p>@code {
private async Task HandleDelete()
{
bool confirmed = await ConfirmService.Show("确认删除", "此操作不可撤销,确定要删除吗?");
if (confirmed)
{
// 执行删除逻辑
}
}
}

登录后复制

UI 层:用 Dialog 或简单 p 实现弹窗

确认对话框 UI 可以用 Blazor Server / WebAssembly 原生 DOM 操作,更推荐用 CSS + 条件渲染(@if (isVisible)):

标签: css javascript java js ai c# 点击事件 绝对定位 red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~