如何访问 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?
ASP.Net MVC:如何基于原始Json数据创建JsonResult