15

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. 
    }
Ajay2707
  • 5,690
  • 6
  • 40
  • 58
MAB
  • 153
  • 1
  • 1
  • 5

5 Answers5

27

If using ASP.NET MVC 2 or higher:

return Json(resultset, JsonRequestBehavior.AllowGet);
alexl
  • 6,841
  • 3
  • 24
  • 29
20

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.

Dave Ward
  • 59,815
  • 13
  • 117
  • 134
  • The additional contentType parameter being set to `application/json` is what I needed. I was doing the Json serialization with Newtonsoft.Json rather than the built in one because I wanted some of serialization customisation it can do. – Matt Kemp Jul 28 '21 at 01:38
6

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

return Json(resultset);
Sergey K
  • 4,071
  • 2
  • 23
  • 34
1

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"));
Jeremy Thompson
  • 61,933
  • 36
  • 195
  • 321
1

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

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

            var json = new JsonResult()
            {
                Data = dict
            };
calmcajun
  • 173
  • 1
  • 4
  • 17