0

SQL サーバーと情報を交換する必要があるページを書いています。移植性の理由と、ASP を作成するのは嫌いですが、IIS 7 サーバーでこれを行うように言われたため、サーバーを実行する C# .NET の汎用ハンドラー (ASHX) である純粋な HTML でページを作成しています。副次的なものであり、AJAX を使用してそれらの間で通信します。を使用してこのアプローチを機能させましたがResponse.ContentType = "text/plain";、1 回の要求で複数の情報を返したいので、XML または JSON に切り替え、XML に傾倒しています。

では、XML を返すために に変更します"text/xml"が、Response.WriteXML コード全体をそのまま使用するのでしょうか、それとももっと簡潔な方法で .NET に組み込まれているのでしょうか? JSONについても同じ質問です。返されたデータを解析するための特定のメソッドが jQuery (JavaScript だけでも) にあることは知っているので、.NET に同様のエンコード方法があるかどうか疑問に思っていました。

4

1 に答える 1

2

しかし、私は応答するだけですか?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についても同じ質問

JavaScriptSerializerなどのJsonシリアライザーを使用して、それを出力ストリームに書き込みます。

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.NETMVCまたはドアをノックするWebAPIが、汎用ハンドラーを作成する代わりに、このようなデータを公開するための好ましい方法であることに注意する必要があります。

于 2012-08-15T18:17:07.167 に答える