我正在编写一个需要与SQL服务器交换一些信息的页面。出于可移植性的原因,并且因为我讨厌编写ASP但是我被告知要在IIS 7服务器上执行此操作,我正在用纯HTML编写页面,这是C#.NET中的通用处理程序(ASHX)来执行服务器 - 副东西,并使用AJAX在它们之间进行通信。我有这种方法使用Response.ContentType = "text/plain";
,但我想用一个请求返回几条信息,所以我转向XML或JSON,倾向于XML。
所以,为了返回XML,我改为"text/xml"
,但是我只是逐字地Response.Write
整个XML代码,或者是否有更简洁的.NET内置方法? JSON也有同样的问题。我知道jQuery中有一些特定的方法(甚至只是JavaScript)来解析返回的数据,所以我想知道在.NET中是否有类似的东西要编码。
答案 0 :(得分:2)
但是我只是简单地反复写入整个XML代码,或者是 .NET内置了一种更简洁的方法吗?
您可以使用XmlWriter,XDocument甚至XmlSerializer来构建XML,然后将其写入Response.OutputStream
。
以下是XDocument
的示例:
public void ProcessRequest(HttpContext context)
{
var doc = new XDocument(
new XElement(
"messages",
new XElement(
"message",
new XAttribute("id", "1"),
new XAttribute("value", "message 1"),
),
new XElement(
"message",
new XAttribute("id", "2"),
new XAttribute("value", "message 2")
)
)
);
context.Response.ContentType = "text/xml";
using (var writer = XmlWriter.Create(context.Response.OutputStream))
{
doc.WriteTo(writer);
}
}
JSON的相同问题
您将使用Json序列化程序,例如JavaScriptSerializer,然后将其写入输出流:
public void ProcessRequest(HttpContext context)
{
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(new
{
messages = new[]
{
new { id = 1, value = "message 1" },
new { id = 2, value = "message 2" },
}
});
context.Response.ContentType = "application/json";
context.Response.Write(json);
}
话虽如此,您应该知道ASP.NET MVC或敲门Web API现在是公开此类数据的首选方式,而不是编写通用处理程序。