14

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

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

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

这是代码片段: ASPX 页面:

<% Html.Telerik().ComboBox()
                       .Name("cbRefTables")
                       .DataBinding(b => b
                           .Ajax()
                           .Select("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. 
    }
4

5 回答 5

27

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

return Json(resultset, JsonRequestBehavior.AllowGet);
于 2011-05-05T17:01:39.233 回答
19

如果该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。

于 2011-05-05T17:44:26.467 回答
5

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

return Json(resultset);
于 2011-05-05T16:58:13.087 回答
1

在 MVC 5 和可能更低的版本中,您可以执行以下操作:

            var dict = new Dictionary<string, string>
            {
                { "name", "Foobar" },
                { "url", "admin@foobar.com" }
            };

            var json = new JsonResult()
            {
                Data = dict
            };
于 2020-01-01T00:49:42.057 回答
1

个人 Json 方法:

return Json(resultset);

它需要System.Web.Http DLL,命名空间是System.Web.Http.Results

在此处输入图像描述


或网站范围内将此行放在 WebApiConfig.cs

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
于 2018-06-12T04:25:47.127 回答