【问题标题】:Cannot implicitly convert type 'bool' to 'Microsoft.AspNetCore.Mvc.ActionResult'无法将类型“bool”隐式转换为“Microsoft.AspNetCore.Mvc.ActionResult”
【发布时间】:2020-07-21 09:56:23
【问题描述】:

我正在尝试通过 ajax 请求向页面返回真/假值,但出现以下错误:

无法将类型“bool”隐式转换为“Microsoft.AspNetCore.Mvc.ActionResult” 这是我的代码:

public ActionResult CheckSignedIn()
{
    return _signInManager.IsSignedIn(User);
}   

我对编程比较陌生,因此我不确定要更改 ActionResult 的用途,也不确定 ActionResult 的含义。任何解决方案或解释将不胜感激

【问题讨论】:

  • 会返回 Json(_signInManager.IsSignedIn(User));工作吗?
  • 试试return OK(_signInManager.IsSignedIn(User));

标签: c# asp.net-core asp.net-identity


【解决方案1】:

From MSDN documentation:

ActionResult 类型代表各种 HTTP 状态代码。任何 从 ActionResult 派生的非抽象类有资格作为有效的 返回类型

在您的情况下,API 期望返回 HTTP 状态代码,而不是布尔值,因此返回带有布尔值的状态代码

public ActionResult CheckSignedIn()
{
    return Ok(_signInManager.IsSignedIn(User));
}

【讨论】:

  • 如果我执行OK,它会给我一个错误,但如果我执行Ok,它不会给我一个错误,并且这样做有什么作用?
  • 好的,谢谢,把“好的”放在前面有什么作用?
  • OK 是 HTTP 状态码之一。每个 ActionResult 都期望带有响应的状态码。 Ok 响应表明请求已成功处理,并返回 200OK 作为状态码。它代表Success。欲了解更多信息:Wiki page
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多