ASP.Net С# 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 внутри класса. Любые идеи?
Ответы
Ответ 1
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);
Ответ 2
Вместо вызова ResolveClientUrl
на объекте Page (или любых элементах управления) вы также можете использовать VirtualPathUtility.ToAbsolute("~/home.aspx");
, который даст вам тот же результат, что и вызов ResolveUrl("~/home.aspx");
Ответ 3
Старый, но может помочь кому-то.
Использование:
using System.Web.UI;
И в коде:
new Control().ResolveClientUrl("Path");
Работала для меня, я использую веб-приложение, а не решение для веб-сайтов.
Привет
Ответ 4
Я нашел VirtualPathUtility.ToAbsolute, чтобы работать очень хорошо для моей цели.
Отлично работает:
protected void build_Menu()
{
StringBuilder sb = new StringBuilder();
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/Default.aspx'>Home</a></li>"));
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/CARS/Default.aspx'>Cars</a></li>"));
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/AIRPLANES/Default.aspx'>Airplanes</a></li>"));
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/MOTORCYCLES/Default.aspx'>Motorcycles</a></li>"));
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/REPORTS/Default.aspx'>Reports</a></li>"));
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/MANUALS/Default.aspx'>Manuals</a> </li>"));
sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/ADMINISTRATION/Default.aspx'>Administration</a></li>"));
MENUfromCodeBehind.Text = sb.ToString();
}