0

我有一个文件树视图,我需要从另一个页面下载这些文件。所以我将 NavigateUrl 设置为下载页面,但我得到了当前页面路径和下载页面路径。

foreach (FileInfo file in currentDir.GetFiles())
            {
                TreeNode nodeFile = new TreeNode(file.Name, file.FullName);
                nodeFile.NavigateUrl = "_layouts/Download.aspx?file="+file.FullName;
                nodeFile.Target = "_blank";
                nodeFile.ImageUrl = "_layouts/images/DOC_SP16.gif";
                currentNode.ChildNodes.Add(nodeFile);
            }

当我单击它导航到的节点时

http://localhost/_CONTROLTEMPLATES/MyLib/_layouts/Download.aspx?file=c:Somefile.txt

但我想要的是这样的根 URL 的路径。

http://localhost/_layouts/Download.aspx?file=ownload.aspx?file=c:Somefile.txt

我不想将我的 download.aspx 移动到该位置。有人对此有很好的解决方案吗?

4

2 回答 2

0

我找到了我正在寻找的简单解决方案

nodeFile.NavigateUrl = "_layouts/Download.aspx?file="+file.FullName;

我在路径的开头放了一个“/”

nodeFile.NavigateUrl = "/_layouts/Download.aspx?file="+file.FullName;
于 2013-07-23T12:21:35.100 回答
0

您的解决方案仅适用于 WebAppliction 根目录上的网站集。

我建议使用SPUtility.GetServerRelativeUrlFromPrefixedUrl method来计算实际正确的 url。

如果要在 SPWeb 级别定位应用程序页面,请使用:

var theUrl =  SPUtility.GetServerRelativeUrlFromPrefixedUrl(   
    "~site/_layouts/Download.aspx?file="+file.FullName
    );

如果要在 SPSite 级别定位应用程序页面,请使用:

var theUrl =  SPUtility.GetServerRelativeUrlFromPrefixedUrl(   
    "~sitecollection/_layouts/Download.aspx?file="+file.FullName
    );

这将确保 url 的正确性,无论您的代码在哪里运行。

作为旁注,您可以访问SharePoint 专用 StackExchange 站点

于 2013-07-23T12:25:56.297 回答