ASP.NET Core中使用Sweet Alert点击默认Ok按钮跳转URL失败如何解决
问题原因及解决思路
- SweetAlert2 回调方法使用错误
你当前用的是旧版SweetAlert的回调传参写法,SweetAlert2的Swal.fire()返回的是Promise对象,不支持直接在第二个参数传入回调函数,这是跳转不触发的最高概率原因。 - Razor语法未解析
代码里的@Url.Action("Action","Controller")是ASP.NET的服务端Razor语法,如果这段JS代码写在独立的.js文件而非.cshtml视图文件中,服务端不会解析该语法,最终url会变成字面量字符串@Url.Action("Action","Controller"),导致跳转路径错误。如果需要在独立JS中使用该路径,可以提前在视图文件中将路径挂载到全局变量,比如window.targetUrl = '@Url.Action("Action","Controller")',再在JS中直接取用window.targetUrl即可。 - 自动关闭场景未覆盖
你配置了timer:5000参数,弹窗会在5秒后自动关闭,默认配置下自动关闭不会触发确认按钮的回调逻辑,需要额外处理自动关闭后的跳转逻辑。 - 配置项拼写错误
你写的BorderColor配置项首字母大写不符合SweetAlert2的规范,正确的参数名是小写开头的borderColor,虽然这个错误不会直接导致跳转失败,但可能引发弹窗渲染异常间接影响逻辑执行。
修正后代码示例
if(msg) { if (msg.provider == "sweetAlert") { swal.fire({ title: msg.title, text: msg.text, icon: msg.icon, timer: 5000, confirmButtonColor: "black", borderColor: "white" }).then((result) => { // 同时覆盖用户点击确认、弹窗自动关闭两种触发场景 if (result.isConfirmed || result.dismiss === Swal.DismissReason.timer) { var url = '@Url.Action("Action","Controller")'; window.location.href = url; } }); } }
内容的提问来源于stack exchange,提问作者dark.vador
相关产品推荐
相关产品推荐

