MudBlazor:单击“确定”按钮时防止关闭 MudDialog

Posted

技术标签:

【中文标题】MudBlazor:单击“确定”按钮时防止关闭 MudDialog【英文标题】:MudBlazor: Prevent closing MudDialog when clicking on OK button 【发布时间】:2021-11-24 23:29:26 【问题描述】:

当用户单击“确定”按钮时,有没有办法防止关闭MudDialog?我想在执行操作时保持对话框打开。

private async Task OpenMyDialogAsync()

    var dialog = DialogService.Show<MyDialog>("My Dialog");
    var result = await dialog.Result;


    if (!result.Cancelled)
    
        // Prevent closing the dialog when user click the OK button
        // to perform an action
    

另一个想法是在MyDialog 实例上注册一个事件。但是Show() 方法返回的结果不包含MyDialog 实例。有什么想法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

那为什么要关闭它呢?您的“确定”按钮有一个OnClick

而不是这个:

<MudButton Color="Color.Primary" OnClick="Submit">Ok</MudButton>
void Submit() => MudDialog.Close(DialogResult.Ok(true));

这样做:

<MudButton Color="Color.Primary" OnClick="RunMyStuff">Ok</MudButton>
    
void RunMyStuff()
    // Run your stuff here
    // Done
    Submit();


void Submit() => MudDialog.Close(DialogResult.Ok(true));

【讨论】:

您的解决方案中的问题是业务逻辑应该在对话框本身中。对于不是最佳方式的可重用组件。我想将逻辑保留在组件之外。我想要 WinForms 中的 FormClosingEventArgs 之类的东西,您可以在其中取消事件,从而防止对话框关闭。 或者您在服务/接口中有业务逻辑,然后从对话框中触发它? 嗯,这是一个解决方法的好主意。谢谢你的提示!

以上是关于MudBlazor:单击“确定”按钮时防止关闭 MudDialog的主要内容,如果未能解决你的问题,请参考以下文章

当我单击搜索按钮时,防止 ProgressDialog 被关闭(Android)

单击对话框内的asp按钮时,如何防止关闭jQuery模式对话框?

防止在外部单击时以弹出模式关闭单元格编辑器

防止对话框在按钮的单击事件处理程序中关闭

单击背景时如何防止laravel jetstream模式关闭?

单击按钮时弹出关闭并重定向到不同的页面!