2012-08-15 48 views
0

我在写一个需要与SQL服务器交换一些信息的页面。出于可移植性原因,并且因为我讨厌编写ASP,但我被告知要在IIS 7服务器上执行此操作,所以我正在使用纯HTML编写页面,这是C#.NET中的一个通用处理程序(ASHX)侧面的东西,并使用AJAX进行沟通。我有这种方法使用Response.ContentType = "text/plain";工作,但我想用一个请求返回几条信息,所以我正在转向XML或JSON,倾向于XML。来自ASHX Handler的AJAX返回类型

因此,要返回XML,我将更改为"text/xml",但是这样做只是我的Response.Write整个XML代码,还是有一个更简洁的方式内置到.NET?对于JSON同样的问题。我知道jQuery中有特定的方法(甚至只是JavaScript)来解析返回的数据,所以我想知道在.NET中是否有类似的东西来编码。

+0

你应该使用ASP.Net MVC。它更好。 – SLaks 2012-08-15 18:15:56

+0

[Web API](http://www.asp.net/web-api)在这里可以很好地工作 – MrOBrian 2012-08-15 18:19:09

回答

2

但后来我只是Response.Write整个XML代码逐字,或者是 有一个更简洁的方式内置到.NET?

你可以使用一个XmlWriterXDocument甚至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现在是公开这些数据而不是编写通用处理程序的首选方法。

+0

您可以省略一个简短的例子吗? – Andrew 2012-08-15 18:17:45

+0

我当然可以。答案已更新。 – 2012-08-15 18:23:40

+0

注意:使用您提供的JSON示例,我不得不说'messages = new object []'。 – Andrew 2012-08-15 21:28:44