Как передать данные Json клиенту из стандартной веб-формы ASP.NET с помощью объекта Response? - PullRequest
0 голосов
/ 13 февраля 2010

Я пытаюсь вернуть простые данные Json из стандартной веб-формы. Звучит очень глупо, но мне действительно нужно, чтобы это произошло. Я использую MVC, и это одна из 3-х страниц, которые я использую, но не вид MVC. В противном случае я написал бы контроллер для возврата Json (myData), но я не могу этого сделать.

Вот что я делаю:

        var serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(someObject);
        HttpContext.Current.Response.ContentType = "application/json";
        HttpContext.Current.Response.Write(json);
        HttpContext.Current.Response.End();

Тем не менее, я получаю диалоговое окно браузера с просьбой сделать это с веб-страницей, то есть оно пытается загрузить страницу ...?

Что мне не хватает?

Мое решение ...

Мне удалось решить эту проблему, изменив мой ContentType на "text / html" (да, хотя это данные Json). :( Хотя это неправильный подход, он работает для меня, так как во всем моем решении есть только Mvc view, который когда-либо будет вызывать его.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2010

Я проверил ваш код и его правильно. На самом деле тип ответа: application / json , и браузер пытается открыть диалоговое окно, чтобы открыть его в каком-либо приложении. Если вы отправляете ajax-запрос, вы можете получать ответ, анализировать и показывать данные через javascript.

1 голос
/ 13 февраля 2010

Самый важный вопрос - что вы хотите делать с данными. Если вы просто передаете его как результат запроса страницы, вполне нормально, что браузер не знает, что с ним делать. Если вы хотите обработать его каким-либо образом, вам нужно где-то подключить его (асинхронный запрос, который обновляет что-то на странице?).

В любом случае, если вы просто хотите использовать страницу для возврата данных, вероятно, вместо этого лучше использовать HttpHandler (файл с расширением ashx), это более легкая альтернатива, когда вам не нужен весь жизненный цикл рендеринга, который имеет обычный WebForm делать.

...