从MVC控制器中的JsonResult方法返回JSON

MAB*_*MAB 10 c# asp.net-mvc jsonresult telerik-mvc

我试图在测试ASP.NET MVC3应用程序中填充ComboBox(Telerik RAD COmboBox).

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

我遇到的问题是我使用的Web服务已经将结果集作为JSON字符串返回.如何直接从Webservice传递响应.

以下是代码片段:ASPX页面:

<% Html.Telerik().ComboBox()
                       .Name("cbRefTables")
                       .DataBinding(b => b
                           .Ajax()
                           .Select("GetCALMdata","Common")                    
                       )
                       .Render();
                %>
Run Code Online (Sandbox Code Playgroud)

控制器:称为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. 
    }
Run Code Online (Sandbox Code Playgroud)

ale*_*exl 24

如果使用ASP.NET MVC 2或更高版本:

return Json(resultset, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

  • 什么是使用参考? (2认同)

Dav*_*ard 16

如果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");
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您不想使用JsonResult或使用Json()帮助程序,因为这将最终重新序列化您的JSON.


Ser*_*hei 5

如果我正确理解你应该使用 Json() 方法

return Json(resultset);
Run Code Online (Sandbox Code Playgroud)

  • 使用参考是什么? (9认同)