簡體   English   中英

將XMLDataSource綁定到HTTP處理程序

[英]Bind XMLDataSource to HTTP handler

我有一些將由一些使用者(ASPX頁,一個Flash文件,也許還有另一個)使用的動態生成的XML數據。

我已經將其實現為自定義處理程序。 我在處理程序中構造XML,然后使用response.write將其輸出。

現在,如果我將XMLDataSource的DataFile屬性設置為處理程序,它會嘗試從字面上讀取ashx文件,並且不會通過HTTP調用它。

有什么建議嗎?

將XML生成代碼放在單獨的類中。 使處理程序使用該類創建XML並將結果發送到客戶端(順便說一句,不要使用Response.Write您首先使用哪種XML文檔技術來構建XML?)。

確保該類可以將完成的XML作為字符串公開。

在您的ASPX頁面中,使用相同的類,並將XML字符串分配給XmlDataSource控件的data屬性。

編輯

由於您使用的是XmlTextWriter,根據您的評論,以上內容顯然有些令人困惑,因此我將添加這些詳細信息。

您需要獲取當前生成XML的代碼,並將其放在App_Code文件夾中的類中(或可能在dll項目中)。 此類將具有以XmlTextWriter作為參數的方法。

public class XmlCreator
{
    public void GenerateXml(XmlTextWriter writer)
    {
         //All your code that writes the XML
    }
}

在您的處理程序中,您將獲得以下代碼:-

XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

請注意,不需要Response.Write,這樣可以正確完成編碼。

在您的ASP.NET頁面中,您可以使用:-

StringWriter source = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(source, Encoding.Unicode);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

yourXmlDataSource.Data = source.ToString();

XmlCreator可能不需要實例化,在這種情況下,您可以使用靜態類,這取決於為XM生成提供數據所需的其他數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM