2

ASPX ページに XML / ASX を出力する必要があります。XML は分離コードから生成され、次のようになります

XML / ASX を作成するために文字列ビルダーを使用しています。

            (...)
            sb.AppendLine("<asx version='3.0'>");
            sb.AppendLine("<title> Spilliste </title>");
            while (i < pdc.Count)
            {
                sb.AppendLine("<entry>");
                sb.AppendLine("<title>" + pdc[i].PageName + "</title>");
                sb.AppendLine("<abstract> Ikke tilgjengelig</abstract>");
                sb.AppendLine("<ref>" + pdc[i].LinkURL + "</ref>");
                sb.AppendLine("</entry>");
                i++;
            }
            sb.AppendLine("</asx>");

            return sb.ToString();
            (...)

しかし、どうすればこれを出力できますか?

Response.Writeコードビハインドからは機能しません。<asp:label>そして、タグ内に配置する必要があるため、ASPX ファイルで使用することは注目に値します。私は基本的に空白の ASPX ページを持っています。

何をすべきか?

4

4 に答える 4

4

これには a を使用しないでくださいPage。基本的にPages は html をレンダリングするためのものです。xml、画像、またはその他の種類のデータを送信する場合は、.ashx ファイルと、IHttpHandler.

インターフェイスの実装方法については、この例を参照してください。

于 2010-02-19T11:33:02.357 に答える
0
    Response.ClearHeaders();
    Response.ContentType = "text/xml;charset=UTF-8";
    string xmlString = "<aaa>sai</aaa>";
    Response.Write(xmlString);
    Response.End();
于 2012-11-28T10:20:19.687 に答える
0

Response.Write はコード ビハインドから動作するはずです。

  Response.Write("some test");
  Response.Flush();

ただし、このコードは Page_Load メソッドで実行する必要があります。xml を生成するための別の aspx ページを用意し、ユーザーをそのページにリダイレクトする必要があります。このページは空である必要があります ( <%@ ... %>aspx ファイルのみ)。

于 2010-02-19T11:35:04.783 に答える
0

これには を使用する必要があります - .ashxファイル作成する(非常に簡単) か、 web.configファイルそれらを登録することで、IHttpHandlerどの URL を処理するかを構成できます。統合モード IIS。

次に、1 つの重要なメンバー (パラメーターを 1 つだけ取る ProcessRequest メソッド) (HttpContext) を持つ単純なクラスが必要になります。

さらに、StringBuilder を使用して XML を構築することは避けてください。代わりに、より安全で柔軟な linq to xml クラスを使用できます。このタイプ セーフなアプローチを使用すると、ヘルパー メソッドを記述して xml ツリーの一部を正しく生成することも簡単になります結果を照会して変換し、起動することができます。

void ProcessRequest(HttpContext context) {
    var pdc = Enumerable.Range(0,10).Select(
        i=>new{PageName="Page"+i,LinkURL="Link"+i});                

    var xmlString = 
    new XElement("asx",
        new XAttribute("version","3.0"),
        new XElement("title","Spilliste"),
        pdc.Select(pdcElem=>
            new XElement("entry",
                new XElement("title",pdcElem.PageName),
                new XElement("abstract","Ikke tilgjengelig"),
                new XElement("ref",pdcElem.LinkURL)
            )
        )
    ).ToString(SaveOptions.DisableFormatting);

    //don't forget to handle headers and set things like content-type too!
    context.Response.Write(xmlString);
}

このアプローチが .aspx ファイルをハッキングするよりも優れている理由は、.aspx ファイルでは可能ですが、そこにたどり着くにはフレームワークと戦う必要があるためです。インフラストラクチャ全体が邪魔になり、おそらく微妙にマングリングします。クライアントに到達する前に出力します。これを取り除く最も簡単な方法は、aspx コントロールをホストして HTML を生成することを特に意図していない、より単純なハンドラーを使用することです。

于 2010-02-19T11:52:25.180 に答える