Не удается неявно преобразовать Web.Http.Results.JsonResult в Web.Mvc.JsonResult.

Я настроил этот метод тестирования на контроллере, чтобы исключить любые сложности. Основываясь на всех результатах, которые я нашел в результате поиска, это должно сработать. Я не уверен, что мне здесь не хватает.

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

Это ошибка, которую я получаю.

Не удается неявно преобразовать тип «System.Web.Http.Results.JsonResult» в «System.Web.Mvc.JsonResult»


person Jhorra    schedule 06.06.2014    source источник
comment
Обратите внимание, что непосредственная проблема не имеет ничего общего с анонимными типами.   -  person user2864740    schedule 06.06.2014
comment
Метод Json(object data), возвращающий желаемое System.Web.Mvc.JsonResult, является защищенным методом System.Web.Mvc.Controller. Вам нужно наследоваться от класса Controller, чтобы иметь возможность использовать это. Если ваш контроллер наследуется от (например) ApiController (как в моем случае;-), вы используете метод Json<T>(T content), который возвращает System.Web.Http.Results.JsonResult<T>...   -  person Vojta Jemelka    schedule 08.12.2015


Ответы (6)


вы должны вернуть JsonResult вместо Json

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

Попробуйте следующее:

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 по умолчанию?

person Christoph Fink    schedule 06.06.2014
comment
@ToanNguyen: и да, и нет. Для меня исходный код работает, так как Json возвращает System.Web.Mvc.JsonResult в моих контроллерах. Но в виде исключения это не в его случае... - person Christoph Fink; 06.06.2014

Пытаться

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

person Arijit Mukherjee    schedule 06.06.2014

В MVC JsonResult наследуется от ActionResult, который находится в пространстве имен System.Web.Mvc.

вот почему вы должны сделать ссылку на System.Web.Mvc.JsonResult как::

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

Вам нужно вернуть данные через класс модели, а не через анонимный класс. Нравиться:

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

Поместите это в свое использование:

using System.Web.Http.Results;

Тогда ваше действие:

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