Относительный URL не работает в System.Web.UI.UserControl - PullRequest
2 голосов
/ 04 февраля 2011
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.

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Обычно я делаю это, чтобы получить root, и они отображают мой путь:

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

1 голос
/ 04 февраля 2011

Вы можете попробовать класс System.Web.VirtualPathUtility:

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