Возвращение JSON из метода JsonResult в контроллере MVC - PullRequest
8 голосов
/ 05 мая 2011

Я пытаюсь заполнить ComboBox (Telerik RAD COmboBox) в тестовом приложении ASP.NET MVC3.

Я определил ComboBox на своей странице ASPX и в контроллере я определил вызов действия, которыйвозвращает JsonResult.

Проблема, с которой я сталкиваюсь, заключается в том, что используемый мной веб-сервис уже возвращает набор результатов в виде строки JSON.Как я могу передать ответ от веб-службы напрямую.

Вот фрагменты кода: 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 ]

22 голосов
/ 05 мая 2011

Если используется ASP.NET MVC 2 или выше:

return Json(resultset, JsonRequestBehavior.AllowGet);
15 голосов
/ 05 мая 2011

Если строка 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");
}

Вы не хотите использовать JsonResult или Json() помощник в этом случае, потому что это приведет к повторной сериализации вашего JSON.

3 голосов
/ 05 мая 2011

если я правильно понял, вы должны использовать метод Json ()

return Json(resultset);
0 голосов
/ 12 июня 2018

Индивидуальный метод Json:

return Json(resultset);

Требуется DLL-библиотека System.Web.Http , а пространство имен - System.Web.Http.Результаты .

enter image description here


Или для всего сайта вставьте эту строку в WebApiConfig.cs

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