2011-05-14 22 views
1

私は私のASP.NETコードビハインドファイルにこのコードを持っている:Response.Write( "<someting>")がASP.NETコードビハインドで動作しないのはなぜですか?

Response.Write("<someting>") 

しかし、それは動作しません。 <タグ区切り文字を削除すると、コンテンツがページに書き込まれます。

私の質問は、コードビハインドからページにXML文字列を書き込むにはどうすればいいですか?

+0

私は答えたxmlhttprequestのコードを実行するための.aspxページを用意したいと思っています。それは簡単に私の答えは、XML形式ではなく、まず私はSQL DBからデータを取得する必要があります。出来ますか ?! – biglibigli

+0

もちろん可能ですが、それはまったく別の質問です。一度に1つだけ質問してください。 =) – Will

答えて

3

あなたがやっていることはすでにうまくいっています。 <someting>タグは、ブラウザがHTMLを予期しているためページに表示されないため、<someting>をHTMLタグとして解釈し、何も表示せず、何も表示しません。ページのソースを見ると、タグが表示されます。

あなたのXMLHttpRequest(XHR)リクエストは、ブラウザーに直接表示されていなくても、このデータを問題なくXMLとして読み取ることができます。しかし、別の答えに概説されているように、コンテンツタイプをtext/xmlに変更するのが理想的です。クライアントは期待するデータフォーマットを知っている必要があります。

+0

OK、コンテンツタイプを1ページに複数回変更できますか?それをデフレートする方法は? – biglibigli

+0

@biglibigliページは1つのHTTPレスポンスヘッダーとして返されるため、1つのcontent-typeのみを持つことができます。すべてのページ(または使用しているHTTPハンドラー)を継承する基本クラスにデフォルトのコンテンツタイプを設定できます。 –

2

あなたがXMLを出力している場合は、次のように、あなたが最初にコンテンツタイプを設定する必要があります。

Response.ContentType = "text/xml"; 

をまた、おそらくハンドラ(.ashx)、いないページ(.aspxの)を使用する方が良いだろうあなたが必要としないすべての種類の余分なページ/フォーム処理をカットするので。

次に例えば、Response.Writeをして自分のページを生成して自由に感じる:

Response.Write("<something>foobar</something>"); 

それはXMLですので、あなたはXMLビューアで生成された出力を表示する必要があります。コンテンツタイプが正しいことを確認すると、Internet Explorerは整形式XMLをツリー構造として表示します。

また、XMLコンテンツで始まる確保すべきである:あなたがHTMLに必要

<?xml version="1.0"?> 
+0

非常に良いですが、私はコードの中のxmlhttprequestに答えた.aspxページを用意したいと思います。それは簡単に私の答えは、XML形式ではなく、まず私はSQL DBからデータを取得する必要があります。出来ますか ?! – biglibigli

+0

と私は使用した後に再び通常どおりに書くことができます:Response.ContentType = "text/xml"; – biglibigli

4

はそれをエンコード:

Response.Write(HttpUtility.HtmlEncode("<someting>")); 

しかし、あなたはXDocumentXmlWriterまたはXmlDocumentを使用する必要があるXMLを作成している場合それが有効であることを保証するために最初に構築し、応答に書き込むだけです。

+0

+1はエンコーディングに言及しています(ただし、タグはエンコードしないでください)。また、手動ではなく、XmlDocument(または同様のもの)を使用するのがベストですこれを正しく行うために必要です – Will

関連する問題