2011-02-04 41 views
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。相对URL在System.Web.UI.UserControl中不起作用

但是,当我将该类的派生类型更改为System.Web.UI.WebControl时,它完全没有任何效果,并且保留了波浪号〜完整。

我看了一下System.Web.UI.Control,它实现了IUrlResolutionService接口,但仍然无法获得System.Web.UI.WebControl来解析URL。

回答

1

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

public foo() 
{ 
    var a = new HyperLink() 
     { 
      Text="Test", 
      NavigateUrl=VirtualPathUtility.ToAbsolute("~/abc.aspx") 
     }; 
    this.Controls.Add(a); 
} 
+0

我希望这个班级能够解决这个问题,并了解他们为什么不这样做。 – maxp 2011-02-04 09:33:23