2012-08-15 69 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