如何使用Response对象从标准ASP.NET WebForm将Json数据传递回客户端?

时间:2010-02-13 13:22:51

标签: asp.net json webforms response.write

我正在尝试从标准WebForm返回简单的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视图才能称之为。

2 个答案:

答案 0 :(得分:2)

我检查了你的代码及其正确。实际上响应类型是 application / json ,浏览器尝试打开一个对话框以在某些应用程序中打开它。如果您发送ajax请求,则可以通过javascript获取响应,解析和显示数据。

答案 1 :(得分:1)

最重要的问题是您想对数据做些什么。如果你只是像页面请求的结果那样传递它,浏览器不知道如何处理它是很正常的。如果你想以某种方式处理它,你必须在某个地方挂钩(一个异步请求,在页面上更新一些东西?)。

无论如何,如果你只是想使用一个页面来返回数据,那么最好使用HttpHandler(扩展名为ashx的文件),当你不需要通常的WebForm所具有的所有渲染生命周期时,它是一个更轻量级的替代方案。要做。