首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从ASP.NET页面返回JSON对象

从ASP.NET页面返回JSON对象
EN

Stack Overflow用户
提问于 2010-03-11 14:19:03
回答 4查看 188.9K关注 0票数 74

在我的特殊情况下,我有几个解决问题的方法。我想找出哪一个更可行。在这种情况下,我也可以通过从服务器端代码返回一个JSON对象来实现我的目标;但是,我不知道它是如何完成的,以及完成它的最好方法是什么。

首先,我不需要完整的aspx页面,因为我只需要代码返回的响应。那么,我是使用web服务,还是使用处理程序,或者是否有其他特定的方法来实现这一点?

这个解决方案可行吗?是否使用StringBuilder类构建JSON字符串并将该字符串注入到目标aspx页面?有什么注意事项或需要注意的事项吗?

我很欣赏你的想法。

致以敬意,

凯马尔

更新-

假设我在userlist.aspx页面中有一个JSON对象,然后我在jQuery中使用它...

代码语言:javascript
复制
{"menu": {
  "id": "color1",
  "value": "color",
  "popup": {
    "menuitem": [
      {"value": "Red"},
      {"value": "Green"},
      {"value": "Yellow"}
    ]
  }
}} // example taken from the json.org/example page

现在,当我想从我的aspx页面添加一个新的菜单项时,我该怎么办…我想这样我的问题就更具体了..。

假设我在aspx代码中创建了一个新字符串,例如"{"value": "Blue"}。如何将其注入到目标页面中已存在的项目列表中?或者这不是处理这种情况的正确方法吗?如果不是,还能如何实现呢?

另外,如果我想在这个列表中添加一个新项目时触发一个jQuery事件,这是如何实现的?

- 2015年8月26日更新2-

当我问这个问题的时候,我处理这个问题的方式是在另一个方面。我现在对这个主题更精通了,可以很高兴地接受投票最多的答案,因为这个问题的方法显然不应该包括已经存在的JSON,并像@DavGarcia也建议的那样从代码中输出一个新的JSON。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-11 15:01:28

在Page_Load中,您需要清除正常输出并编写自己的输出,例如:

代码语言:javascript
复制
string json = "{\"name\":\"Joe\"}";
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();

要将C#对象转换为JSON,可以使用诸如Json.NET之类的库。

考虑使用Web Service (asmx)或WCF,两者都可以输出JSON,而不是让您的.aspx页面输出JSON。

票数 136
EN

Stack Overflow用户

发布于 2010-03-11 14:28:26

用asp做这件事没有问题……用MVC做这件事是最自然的,但也可以用标准的asp做。

MVC框架为JSON提供了各种各样的helper类,如果可以,我建议您参考MVC-love,如果没有,您可以很容易地获取MVC使用的JSON助手类,并在asp.net的上下文中使用它们。

编辑:

下面是一个使用MVC返回JSON数据的示例。这将在您的控制器类中。这是MVC的开箱即用功能--当你创建一个新的MVC项目时,这个东西会自动创建,所以它没有什么特别之处。我唯一要做的就是返回一个JSON的actionResult,我调用的JSON方法是控制器类上的一个方法,这都是非常基本的,默认的MVC的东西:

代码语言:javascript
复制
public ActionResult GetData()
{
    var data = new { Name="kevin", Age=40 };
    return Json(data, JsonRequestBehavior.AllowGet);
}

此返回数据可以通过JQuery作为ajax调用调用,如下所示:

代码语言:javascript
复制
$.get("/Reader/GetData/", function(data) { someJavacriptMethodOnData(data); });
票数 18
EN

Stack Overflow用户

发布于 2012-11-19 07:35:41

使用ASP.NET网页,您可以在单个页面上执行此操作,作为基本的GET示例(这是可以工作的最简单的事情。

代码语言:javascript
复制
var json = Json.Encode(new {
    orientation = Cache["orientation"],
    alerted = Cache["alerted"] as bool?,
    since = Cache["since"] as DateTime?
});
Response.Write(json);
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2422983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档