2014-06-06 1 views
2

Я настроил этот метод тестирования на контроллере, чтобы исключить любое его осложнение. Исходя из всех результатов, которые я нашел из поиска, это должно работать. Я не уверен, что мне здесь не хватает.Невозможно неявно преобразовать Web.Http.Results.JsonResult в Web.Mvc.JsonResult

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

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

Не может неявно преобразовать тип 'System.Web.Http.Results.JsonResult' в '' System.Web.Mvc.JsonResult

+1

Обратите внимание, как * * непосредственная проблема не имеет ничего общего с анонимными типами. – user2864740

+1

'Json (object data)' метод, который возвращает желаемый 'System.Web.Mvc.JsonResult' метод _protected_' System.Web.Mvc.Controller'. Вам нужно наследовать класс Controller, чтобы иметь возможность использовать это. Если ваш контроллер наследует (например, ApiController (как в моем случае ;-), вы используете 'Json (T content)' метод, который возвращает 'System.Web.Http.Results.JsonResult ' ... –

ответ

1

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

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?

+0

Вы протестировали ваш код ?? –

+0

@ToanNguyen: Да и нет. Для меня начальный код работает, так как 'Json' возвращает' System.Web.Mvc.JsonResult' в мои контроллеры. Но в соответствии с исключением это не в его случае ... – ChrFin

0

Попробуйте

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

+2

Как это исправить ошибку компилятора? – AgentFire

0

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

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

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

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

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

Вам необходимо вернуть данные через класс модели, а не анонимный класс. Как:

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

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

using System.Web.Http.Results; 

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

public JsonResult<YourClass> Get(string Search) 
     { 
      var Search = Search 
      return Json(Search); 
     } 
Смежные вопросы