从 Blazor 中的 SweetAlert 返回 false

Returning false from SweetAlert in Blazor

编辑:找到了解决方法,但仍想知道更好的方法

解决方法:
 async Task Delete(string userId)
    {
        var boolval = false;

        var modalresponse = await js.InvokeAsync<object>("swal", "Are you sure", "", "error", new { buttons = true });

        if(modalresponse == null)
        {
            boolval = false;
        }
        else if (modalresponse.GetType().IsValueType)
        {
            boolval = true;
        }

        if (boolval)
        {
           // delete user
        }
        else
        {
           // do something else
        }

    }



原问题:

我一直在尝试在我的项目中使用 swal。

在我的 razor 页面中,我试图显示一个弹出窗口,根据它的响应我会做一些事情


@inject IJSRuntime js

    var result = await js.InvokeAsync<bool>("swal", new
    {
        title = "Some title",
        text = "Some text",
        icon = "warning",
        buttons = true,
    });

    if(result) {
        // do something
    }
    else {
       // do something else
    }

单击“确定”可以正常工作,但单击“取消”会损坏应用程序。说 JSON value could not be converted to bool

如果我为 return 类型输入 bool? 而不是 bool 然后单击取消,它会显示 null object cannot be converted to value type

也尝试使用 Convert.ToBooleanConvert.ToInt32 但没有用

如果用户点击取消,我如何捕捉?

因为 InvokeAsync 文档指出 TValue 是 JSON 可序列化的 return 类型,无法序列化为 bool.

    // Type parameters:
    //  TValue:
    //  The JSON-serializable return type.