从ASP.NET页面返回JSON对象

Kem*_*min 64 asp.net json

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

首先,我不需要一个完整的aspx页面,因为我只需要从代码返回的响应.那么,我使用Web服务,处理程序,还是有其他特定的方法来执行此操作?

这个解决方案可行吗?我是否使用StringBuilder该类构建JSON字符串并将该字符串注入目标aspx页面?我应该注意哪些预防措施或事项?

我很感激你的想法.

问候,

凯末尔

------------ UPDATE!------------

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

{"menu": {
  "id": "color1",
  "value": "color",
  "popup": {
    "menuitem": [
      {"value": "Red"},
      {"value": "Green"},
      {"value": "Yellow"}
    ]
  }
}} // example taken from the json.org/example page
Run Code Online (Sandbox Code Playgroud)

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

让我们假设我在我的aspx代码中创建了一个新字符串"{"value": "Blue"}.如何将其注入目标页面中现有的项目列表?或者这不是解决这种情况的正确方法吗?如果没有,还能实现其他目标吗?

此外,如果我想在将新项添加到此列表时触发jQuery事件,这是如何实现的?

------------ 2015年8月26日更新2 ------------

当我问这个问题时,我接近问题的方式是另一个方面.我现在对这个主题更熟练,并且很乐意接受最多投票的答案,因为这个问题的方法显然不应该包括已经存在的JSON并且从代码中输出一个新的JSON @DavGarcia也是如此.

Dav*_*cia 123

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

string json = "{\"name\":\"Joe\"}";
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();
Run Code Online (Sandbox Code Playgroud)

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

不要让.aspx页面输出JSON,而是考虑使用Web服务(asmx)或WCF,两者都可以输出JSON.

  • 更新答案以包含 Response.End(),否则可能会呈现页面控件 (2认同)

Kev*_*Won 16

没问题用asp做它....用MVC这样做是最自然的,但也可以用标准的asp来完成.

MVC框架有各种各样的JSON辅助类,如果可以的话,我建议在一些MVC-love中使用,如果没有,你可以轻松地获取MVC使用的JSON帮助程序类并在上下文中使用它们的asp.net.

编辑:

这是一个如何使用MVC返回JSON数据的示例.这将在您的控制器类中.这是MVC的开箱即用功能 - 当你创建一个新的MVC项目时,这些东西会被自动创建,所以没什么特别的.我唯一要做的就是返回一个JSON的actionResult.我正在调用的JSON方法是Controller类的一个方法.这是所有非常基本的默认MVC内容:

public ActionResult GetData()
{
    var data = new { Name="kevin", Age=40 };
    return Json(data, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

这个返回数据可以通过JQuery作为ajax调用调用:

$.get("/Reader/GetData/", function(data) { someJavacriptMethodOnData(data); });
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的答案,我不是在使用MVC,而是从你的答案开始研究.虽然我这样做,你能为我提供一些你已经知道的资源吗? (2认同)
  • 凉爽的!最简单的解决方案 (2认同)

Sco*_*man 12

使用ASP.NET网页,您可以在单个页面上执行此操作作为基本GET示例(最简单的可行方法).

var json = Json.Encode(new {
    orientation = Cache["orientation"],
    alerted = Cache["alerted"] as bool?,
    since = Cache["since"] as DateTime?
});
Response.Write(json);
Run Code Online (Sandbox Code Playgroud)

  • 我不得不查看这个,所以其他任何人都不知道,Json对象是System.Web.Helpers.Json - 如果你没有引用那个DLL,或者不能,你可以使用System.Web .Script.Serialization.JavaScriptSerializer,大致相同. (4认同)