在我的特殊情况下,我有几个问题的解决方案。我想找出哪一个更可行。在这种情况下,我还可以通过从服务器端代码返回JSON对象来实现我的目标;但是,我不知道它是如何完成的,最好的方法是什么。
首先,我不需要完整的aspx页面,因为我只需要从代码返回的响应。那么,我使用Web服务,处理程序,还是有其他特定的方法来执行此操作?
这个解决方案可行吗?我是否使用StringBuilder
类构建JSON字符串并将该字符串注入目标aspx页面?我应该注意哪些预防措施或事项?
感谢您的想法。
此致
末尔
------------更新!------------
假设我的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
现在,当我想从我的aspx页面添加一个新的菜单项时,我该怎么做...我认为这样我的问题更具体......
让我们假设我在我的aspx代码中创建了一个新字符串,就像这样"{"value": "Blue"}
。如何将其注入目标页面中现有的项目列表?或者这不是解决这种情况的正确方法吗?如果没有,还能实现其他目标吗?
另外,如果我想在将新项目添加到此列表时触发jQuery事件,这是如何实现的?
------------ 2015年8月26日更新2 ------------
当我问这个问题时,我接近问题的方式是另一个方面。我现在对这个主题更熟练,并且很乐意接受最多投票的答案,因为这个问题的方法显然不应该包括已经存在的JSON并从代码中输出一个新的JSON,@DavGarcia
也建议。
答案 0 :(得分:121)
在Page_Load中,您需要清除正常输出并编写自己的输出,例如:
string json = "{\"name\":\"Joe\"}";
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();
要将C#对象转换为JSON,您可以使用Json.NET等库。
不是让你的.aspx页面输出JSON,而是考虑使用Web服务(asmx)或WCF,两者都可以输出JSON。
答案 1 :(得分:16)
用asp做这个问题没问题....使用MVC这样做是最自然的,但也可以使用标准的asp来完成。
MVC框架有各种各样的JSON辅助类,如果可以的话,我建议在某些MVC爱情中使用,如果没有,你可以轻松地获取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);
}
这个返回数据可以通过JQuery作为ajax调用来调用:
$.get("/Reader/GetData/", function(data) { someJavacriptMethodOnData(data); });
答案 2 :(得分:13)
这是我的问题的一个很好的解决方案:
也一定要读到这个: http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/
答案 3 :(得分: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);
答案 4 :(得分:2)
如果您获得了代码,请使用类似
的代码 MyCustomObject myObject = new MyCustomObject();
myObject.name='try';
//OBJECT -> JSON
var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string myObjectJson = javaScriptSerializer.Serialize(myObject);
//return JSON
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(myObjectJson );
Response.End();
因此,返回一个带有MyCustomObject所有属性的json对象。