我有一个ASHX处理程序,它返回一个
XML响应(FileStructureXML.ashx).
现在我需要从ASHX处理程序获取XML响应并将其用作我的ASPX页面的数据源.
如果我将XMLDataSource指向服务器上的静态XML文件,则树视图将按预期填充.但是,如果我将XMLDataSource指向ASHX处理程序而不是服务器上的静态XML文件,则它不起作用.
任何帮助,将不胜感激.
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView_Folders" runat="server" DataSourceID="FileXML">
<DataBindings>
<asp:TreeNodeBinding DataMember="Directory" TextField="Name" />
<asp:TreeNodeBinding DataMember="File" TextField="Name" />
</DataBindings>
</asp:TreeView>
</div>
<div>
<asp:XmlDataSource ID="FileXML" runat="server" DataFile="FileStructureXML.ashx">
</asp:XmlDataSource>
</div>
</form>
</body>
最佳答案 我认为XmlDataSource仅适用于实际文件,而不适用于URL.您可以通过不指定DataFile属性并在后面的代码中动态加载Data属性来解决此问题.我认为FirstChild.OuterXml选择是正确的,但您可能需要进行实验.我不在我可以测试它的地方.
XmlDocument treeDoc = new XmlDocument();
treeDoc.Load( "~/FileStructureXML.ashx" ); // this takes a URL
FileXml.Data = treeDoc.FirstChild.OuterXml; // everything after the xml definition