如何访问 JsonResult 的成员?

Posted

技术标签:

【中文标题】如何访问 JsonResult 的成员?【英文标题】:How can I access members of a JsonResult? 【发布时间】:2021-12-24 05:24:07 【问题描述】:

由于某些原因,我不得不尝试检查 JsonResult 的内容是否只是“真实”,但是我找不到访问它的方法。对象本身显示数据在“Value”下的对象中,但是在对象末尾键入“.Value”是无效的。

(我不能简单地重构它,以便我得到一个常规的字符串返回而不是 JsonResult,因为这会涉及很多其他代码更改)

【问题讨论】:

什么是IsNotExistingTacAd?它返回什么?这可能是 MVC 动作吗?请将代码发布为文本,而不是图像。 你真的应该重构这个。特别是它返回一个 boolean... (也:是IsNotExistingCadAd 的返回类型Task<object> 或类似的,你需要cast你的结果先到JsonResponse?) 你能提供IsNotExistingTacAd的实现吗?只是一个建议,尝试做一个空检查:if(result?.Value != "true") 可能是IsNotExistingTacAdd 返回一个可以为空的值,所以如果你没有正确检查,你会得到一个编译错误。不是最佳实践,但您也可以使用 dynamic 而不是 var 【参考方案1】:

在您的情况下,您可以使用此代码

var result= await IsNot....;

if ( result.Value!=null && bool.TryParse(result.Value.ToString(), out var success))
    if ( success )  ;

但是如果你在你的行动中有这个代码

return  new JsonResult (true);

你不必转换

var success = result.Value as bool?;

if ((success != null) && (bool) success)  ;

【讨论】:

最简单的解决方法是强制转换,所以我做了var result = (JsonResult) await...,问题就消失了。

以上是关于如何访问 JsonResult 的成员?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Asp.Net Core 中间件的 JsonResult 响应?

如何从 Razor 页面返回带有 HTTP 状态代码 500 的 JsonResult?

如何保护我的 JsonResult GET 调用?

ASP.Net MVC:如何基于原始Json数据创建JsonResult

如何在 MVC4 中将 Json 字符串输出为 JsonResult?

服务层中的 JsonResult