2011-05-05 66 views
7

我想在测试ASP.NET MVC3应用程序中填充ComboBox(Telerik RAD COmboBox)。从MVC控制器中的JsonResult方法返回JSON

我在我的ASPX页面上定义了ComboBox,并在控制器中定义了返回JsonResult的动作调用。

我遇到的问题是我正在使用的Web服务已经将结果集作为JSON字符串返回。我怎样才能直接传递来自Webservice的响应。

这里是代码的片段: ASPX页: <%Html.Telerik()组合框() 请将.Name( “cbRefTables”) .DataBinding(B => b 阿贾克斯() 。选择(“GetCALMdata”,“Common”)
) .Render(); %>

控制器:称为CommomController

public JsonResult GetCALMdata() 
    { 
     CALMwsP.wsCALMSoapClient wsC = new CALMwsP.wsCALMSoapClient("wsCALMSoap"); 
     string resultset = wsC.GetRefTables("P_1", "P_2", "P_3", "P_4"); 

     return ??; -- I want to return resultset which is already formatted. 
    } 

回答

15

如果resultset字符串已经是JSON(而不是包裹在任何XML),那么你会希望与正是字符串作为内容返回ContentResult

public ContentResult GetCALMdata() 
{ 
    CALMwsP.wsCALMSoapClient wsC = new CALMwsP.wsCALMSoapClient("wsCALMSoap"); 
    string resultset = wsC.GetRefTables("P_1", "P_2", "P_3", "P_4"); 

    return Content(resultset, "application/json"); 
} 

你不想使用JsonResultJson()助手在这种情况下,因为这是要最终重新序列化您的JSON。

3

如果我理解正确应使用ASP.NET MVC 2或更高使用JSON()方法

return Json(resultset); 
+4

什么是使用参考? – 2013-02-08 04:40:58

18

如果:

return Json(resultset, JsonRequestBehavior.AllowGet); 
+0

这就是我原来的,但是我得到以下错误:Microsoft JScript运行时错误:'Selected'为空或不是对象 – MAB 2011-05-05 17:07:30

+1

那么,该错误不会出现在控制器。所以你的问题是你如何处理JSON。 – 2011-05-05 17:23:14

+0

最有可能是错误来自组合框,它不知道默认选择项应该是什么 – curtisk 2011-05-05 17:28:07