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

发布于 2024-11-05 00:53:01 字数 915 浏览 5 评论 0原文

我正在尝试在测试 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();
                %>

控制器:称为 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. 
    }

I am trying to populate a ComboBox (Telerik RAD COmboBox) in a test ASP.NET MVC3 app.

I have defined the ComboBox on my ASPX page and in the controller I have defined the action call that returns a JsonResult.

The problem I am having is that the Web Service I am using already returns the resultset as a JSON string. How can I pass the response from the Webservice directly.

Here is the snippets of code:
ASPX page:

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

Controller: called 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. 
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

天暗了我发光 2024-11-12 00:53:01

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

return Json(resultset, JsonRequestBehavior.AllowGet);

If using ASP.NET MVC 2 or higher:

return Json(resultset, JsonRequestBehavior.AllowGet);
风吹雪碎 2024-11-12 00:53:01

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

If the resultset string is already JSON (and not wrapped in any XML), then you'd want to return a ContentResult with exactly that string as the content:

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");
}

You don't want to use JsonResult or the Json() helper in this case, because that's going to end up re-serializing your JSON.

安静被遗忘 2024-11-12 00:53:01

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

return Json(resultset);

if I correctly understood you should use the Json() method

return Json(resultset);
林空鹿饮溪 2024-11-12 00:53:01

单个 Json 方法:

return Json(resultset);

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

输入图片此处描述


或者网站范围内将此行放入 WebApiConfig.cs 中

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

The individual Json Method:

return Json(resultset);

It needs the System.Web.Http DLL and the namespace is System.Web.Http.Results.

enter image description here


Or Website wide put this line in the WebApiConfig.cs

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
作死小能手 2024-11-12 00:53:01

在 MVC 5 或以下版本中,您可以执行以下操作:

            var dict = new Dictionary<string, string>
            {
                { "name", "Foobar" },
                { "url", "[email protected]" }
            };

            var json = new JsonResult()
            {
                Data = dict
            };

In MVC 5 and possibly below you can do something like this:

            var dict = new Dictionary<string, string>
            {
                { "name", "Foobar" },
                { "url", "[email protected]" }
            };

            var json = new JsonResult()
            {
                Data = dict
            };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文