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

ASP.NET Framework返回JSON时传递ViewData,前端无法访问该如何解决?

问题原因与解决方案

问题根源

你当前返回的是JsonResult类型的响应,而ViewData是MVC框架中用于给Razor视图页面传递数据的容器,它不会被自动包含在JSON响应的内容里,所以前端自然无法读取到这个值。

解决办法

最直接的方式是把creditMemo合并到你返回的JSON数据中,修改控制器代码如下:

public ActionResult GLSearchView_Read([DataSourceRequest] DataSourceRequest request, DateTime? d = null, DateTime? d2 = null, int aid = 0)
{
    bool creditMemo = true; // 补上原代码缺失的分号
    var dataSourceResult = GLResearch.Read(aid, d, d2).ToDataSourceResult(request);
    
    // 将需要传递的布尔值与数据源结果合并成一个新对象
    var responseData = new 
    {
        Data = dataSourceResult.Data,
        Total = dataSourceResult.Total,
        AggregateResults = dataSourceResult.AggregateResults,
        Errors = dataSourceResult.Errors,
        creditMemo = creditMemo
    };
    
    var result = Json(responseData);
    result.MaxJsonLength = int.MaxValue;
    return result;
}

这样前端接收到的JSON响应里就会包含creditMemo字段,你可以直接在前端代码中访问这个值来做条件渲染。

其他可选思路

如果creditMemo的值不需要和当前数据请求绑定,也可以考虑将其存储到Cookie或Session中,但这种方式更适合需要跨请求保留的场景,对于单次数据请求来说,合并到JSON响应里是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:50:39