ASP.Net C# ResolveClientUrl в Классе

У меня есть следующий код:

public class NavigationPath
{
    private string menuItems = "<li>" +
                                    "<a href=\"#\">home</a>" +
                               "</li>";

Но я хотел бы иметь:

public class NavigationPath
{
    private string menuItems = "<li>" +
                                    "<a href=\"" + ResolveClientUrl("~/home.aspx") + "\">re</a>" +
                               "</li>";

Однако я не могу использовать ResolveClientUrl в Классе. Какие-либо идеи?

18
задан ROMANIA_engineer 6 October 2017 в 20:03
поделиться

2 ответа

ResolveClientUrl является членом класса System.Web.UI.Control, поэтому он доступен непосредственно как:

var url = ResolveClientUrl("~/Some/Url/");

при вызове в коде вашей asp.net страницы.

Чтобы использовать его внутри класса, вам придется передать страницу (или элемент управления на странице) в класс в его конструкторе. Даже тогда я не уверен, что вы сможете использовать его так, как вы указали. Скорее всего, вам придется сделать что-то подобное:

public class NavigationPath
{
  private string menuItems = string.Empty;

  public NavigationPath(Page page)
  {
    menuItems = "<li>" + "<a href=\"" + page.ResolveClientUrl("~/Home.aspx") + "\">home</a>" + "</li>";
  }
}

А затем внутри вашей страницы asp.net сделать что-то вроде:

var navPath = new NavigationPage(this);
8
ответ дан 30 November 2019 в 06:07
поделиться

Вместо вызова ResolveClientUrl для объекта Page (или любых элементов управления) вы также можете использовать VirtualPathUtility.ToAbsolute ("~ / home.aspx"); , который даст вам тот же результат, что и при вызове ResolveUrl ("~ / home.aspx");

49
ответ дан 30 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: