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インターフェイスを実装するものを見てみましたが、まだURL を解決IUrlResolutionServiceできないようです。System.Web.UI.WebControl

4

2 に答える 2

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 に答える
1

私は通常、ルートを取得するためにこれを行い、彼らは私のパスをマップします:

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

于 2011-02-04T09:30:47.890 に答える