2
public class foo : System.Web.UI.Control
{
    public foo()
    {
      var a = new HyperLink(){ Text="Test", NavigateUrl="~/abc.aspx"};
      this.Controls.Add(a);
    }
}

上面的代码可以正常工作,当添加到页面时会成功识别波浪号 /~ 符号并将 url 转换为相对 url。

但是,当我将类的派生更改为System.Web.UI.WebControl它时,它绝对不会做任何事情,并且保持波浪号 / ~ 完好无损。

我查看了System.Web.UI.Control哪个实现了IUrlResolutionService接口,但似乎仍然无法System.Web.UI.WebControl解析 url。

4

2 回答 2

1

我通常这样做是为了获得 root 权限,然后他们会映射我的路径:

HostingEnvironment.ApplicationVirtualPath() + "/mypath/mypage.aspx"

于 2011-02-04T09:30:47.890 回答
1

您可以尝试 System.Web.VirtualPathUtility 类:

public foo()
{
  var a = new HyperLink()
      { 
          Text="Test", 
          NavigateUrl=VirtualPathUtility.ToAbsolute("~/abc.aspx")
      };
  this.Controls.Add(a);
}
于 2011-02-04T09:29:58.460 回答