我有一个返回 XML 响应的 ASHX 处理程序 (FileStructureXML.ashx)。
现在我需要从 ASHX 处理程序获取 XML 响应并将其用作我的 ASPX 页面的数据源。
如果我将 XMLDataSource 指向服务器上的静态 XML 文件, TreeView 将按预期填充。但是,如果我将 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
关于ASP.NET——如何使用来自 ASHX 处理程序的 XML 数据响应填充 TreeView 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/245418/