2014-06-06 89 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'是'System.Web.Mvc.Controller'的_protected_方法。您需要從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 JsonResultActionResult這是在命名空間繼承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); 
     } 
相關問題