You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TempData内容无法在JavaScript弹窗中显示的问题求助

问题:Ajax请求后无法通过TempData显示弹窗内容

点击按钮调用Ajax请求控制器方法后,弹窗无内容;修改写法后弹窗甚至不显示,相关代码如下:

按钮代码

<a style="float: right; margin-bottom:20px" asp-action="Verify" class="Button btn btn-primary" onclick="test();">Verify Document</a>

控制器及前端JS代码

public JsonResult Verify()
{
    StringBuilder sb = new StringBuilder();
    sb.Append("<b> Verification Failed </b>");
    sb.Append("<Br/>");
    sb.Append("This document is not a valid electronic reproduction of a record on file");
    sb.Append("<Br/>");
    TempData["Message"] = sb.ToString();
    return Json(new { msg = "saved" });
}
function test() {
    var dialog = $('#dialog').data("kendoDialog");
    $.ajax({
        type: "POST",
        url: '@Url.Action("Verify", "Home")',
        success: function (result) {
            if (result.msg == "saved") {
                alert('@Html.Raw((string)TempData["Message"])')
            }
        }
    });
}

问题原因

  1. Razor语法是服务器端渲染:页面加载时@TempData["Message"]就会被服务器解析,此时还未调用Verify方法,TempData["Message"]为空,最终生成的JS代码是alert(''),显示空弹窗;如果直接写@TempData["Message"],解析后可能生成无效代码导致JS报错,弹窗无法显示。
  2. TempData不适合Ajax场景:TempData是用于服务器端重定向时传递临时数据的,Ajax是客户端异步请求,请求完成后服务器端设置的TempData无法回写到已加载完成的页面中。

解决方案

直接将需要返回的消息包含在Json结果中,不要使用TempData:

修改后的控制器代码

public JsonResult Verify()
{
    StringBuilder sb = new StringBuilder();
    sb.Append("<b> Verification Failed </b>");
    sb.Append("<Br/>");
    sb.Append("This document is not a valid electronic reproduction of a record on file");
    sb.Append("<Br/>");
    // 将消息直接放入返回的Json对象
    return Json(new { msg = "saved", message = sb.ToString() });
}

修改后的前端JS代码

function test() {
    var dialog = $('#dialog').data("kendoDialog");
    $.ajax({
        type: "POST",
        url: '@Url.Action("Verify", "Home")',
        success: function (result) {
            if (result.msg == "saved") {
                // 直接使用返回的message字段
                alert(result.message);
                
                // 如果需要显示HTML格式内容,推荐使用Kendo Dialog替代alert:
                // dialog.content(result.message);
                // dialog.open();
            }
        }
    });
}

内容的提问来源于stack exchange,提问作者rimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:35:27