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
相关产品推荐
相关产品推荐

