У меня есть следующий код:
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 в Классе. Какие-либо идеи?
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);
Вместо вызова ResolveClientUrl
для объекта Page (или любых элементов управления) вы также можете использовать VirtualPathUtility.ToAbsolute ("~ / home.aspx");
, который даст вам тот же результат, что и при вызове ResolveUrl ("~ / home.aspx");