C# 如何从用户控件获取页面url路径

C# 如何从用户控件获取页面url路径,c#,asp.net,C#,Asp.net,在我的用户控件中,我有超链接 该链接需要指向包含用户控件的页面的同一文件夹中名为“export.ashx”的页面 <asp:HyperLink CssClass="btnblue" ID="hypAddItem" Visible="false" NavigateUrl="" runat="server"><i class="icon-plus"></i> Add Part</asp:HyperLink> 我需要在pageUrl中放入哪些内容才能在

在我的用户控件中,我有超链接 该链接需要指向包含用户控件的页面的同一文件夹中名为“export.ashx”的页面

<asp:HyperLink CssClass="btnblue" ID="hypAddItem" Visible="false" NavigateUrl="" runat="server"><i class="icon-plus"></i> Add Part</asp:HyperLink>
我需要在pageUrl中放入哪些内容才能在每个文件夹上工作

我的目录结构

root
  folder1
    pageWithUC.aspx
    export.ashx
  folder2
     pagewithUC.aspx
     export.ashx
  usercontrols
    uc.acsx
您可以这样做:

var url = Request.Url.FilePath;
var folder = System.IO.Path.GetDirectoryName(url)
hypAddItem.NavigateUrl = folder + "/Export.ashx";
这样做:

~/folder1/export.ashx
如果您想要第二个文件夹:

~/folder2/export.ashx
~
符号代表您的根目录

您还可以从uc.acsx返回一个目录,进入folder1/folder2:

../folder1/export.ashx

您可以从请求中获取当前URL,并将其与ashx组合,如下所示:

Uri myUri = new Uri(HttpContext.Current.Request.Url, "Export.ashx");
然后使用Uri类方法获取相对路径:

hypAddItem.NavigateUrl = myUri.PathAndQuery;

您可以尝试使用Server.MapPath(~)并将then文件夹与之一起使用

~/export.aspx。。。“~”代表主目录。my export.ashx不在主目录中。他在页面目录中。代码在UC代码中,不在页面中。我不想为URL添加属性。什么是变量pageUrl?我猜想这一定是hypAddItem.NavigateUrl=folder+“/Export.ashx”;
hypAddItem.NavigateUrl = myUri.PathAndQuery;