不能隐式地将Web.Http.Results.JsonResult转换为Web.Mvc.JsonResult

本文关键字:JsonResult Web 转换 Mvc Results Http 不能 | 更新日期: 2023-09-27 18:06:55

我在控制器上设置了这个测试方法,以消除它的任何复杂性。根据我从搜索中发现的所有结果,这应该是可行的。我不知道我错过了什么。

public JsonResult test() 
{
    return Json(new { id = 1 });
}

这是我得到的错误。

不能隐式转换类型"System.Web.Http.Results"。JsonResult'到'System.Web.Mvc.JsonResult'

不能隐式地将Web.Http.Results.JsonResult转换为Web.Mvc.JsonResult

你应该返回一个JsonResult而不仅仅是Json

 public JsonResult test() 
    {
        var result = new JsonResult();
        result.Data = new
        {
             id = 1
         };
        result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        return result;
    }

尝试如下:

public System.Web.Http.Results.JsonResult test() 
{
    return Json(new { id = 1 });
}

似乎Json不会产生System.Web.Mvc.JsonResult,这是预期的,因为您可能是using System.Web.Mvc;,而是System.Web.Http.Results.JsonResult
更通用的也应该可以使用:

public ActionResult test() 
{
    return Json(new { id = 1 });
}

注意:
在我的MVC控制器的Json方法确实返回一个System.Web.Mvc.JsonResult。是否从默认的System.Web.Mvc.Controller继承?

Try

return Json(new { id = 1 }, JsonRequestBehavior.AllowGet);

您需要通过模型类而不是匿名类返回数据。如:

public System.Web.Http.Results.JsonResult<modelClass> test(){
        return Json(new modelClass(){ id=1 });
}

在MVC中JsonResult继承自ActionResult,这是在命名空间System.Web.Mvc

这就是为什么你应该把System.Web.Mvc.JsonResult的引用设置为::

public System.Web.Mvc.JsonResult test() 
{
    return Json(new { id = 1 });
}

把这个放到你的Using中:

using System.Web.Http.Results;

Then Your Action:

public JsonResult<YourClass> Get(string Search)
        {
           var Search = Search
           return Json(Search);
        }