C# 使树节点文本可下载 link

C# Make Tree Node text downloadable link

这是我用来构建树的代码:

来自 Nick Saxelby

<script runat="server">
    protected void NodeLoad(object sender, NodeLoadEventArgs e)
    {
        // NodeID stores the local disk path ( full path ) of the selected node to expand
        string path = e.NodeID;

        if (!string.IsNullOrEmpty(e.NodeID))
        {
            foreach(var folder in System.IO.Directory.GetDirectories(path))
            {
                string folderName = new System.IO.DirectoryInfo(folder).Name;
                Node folderNode = new Node();
                folderNode.Text = folderName;
                folderNode.NodeID = folder;
                e.Nodes.Add(folderNode);
            }

            foreach(var fileLeaf in System.IO.Directory.GetFiles(path))
            {
                Node treeNode = new Node();
                treeNode.Text = System.IO.Path.GetFileName(fileLeaf);
                treeNode.NodeID = fileLeaf;
                treeNode.Leaf = true;
                e.Nodes.Add(treeNode);
            }
        }
    }
</script>

如何使 TreeNode 文本成为可下载的 url 以便用户可以下载特定文件?

要在节点上设置 link,请将 treeNode.Href 设置为 URL。

如果文件已与此页面一起托管在您的网站上,我想您知道他们的 URLs。

例如,可以在 http://example.com/Files/Directory/MyFile.txt

找到像 C:\inetpub\wwwroot\Files\Directory\MyFile.txt 这样的本地文件

那样的话,你需要弄清楚那个URL。我制作了一个将 "resituating" 本地文件路径转换为 ​​Web 路径的工具,它是一个名为 PathMatcher 的 NuGet 包(在文档中向下滚动到 'PathMatcher.Resituate' 部分以获取示例)