Frage

Ich habe den folgenden Code:

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

Aber ich möchte haben:

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

Allerdings bin ich nicht in der Lage ResolveClientUrl innerhalb einer Klasse zu verwenden. Irgendwelche Ideen?

War es hilfreich?

Lösung

ResolveClientUrl ist ein Mitglied der System.Web.UI.Control Klasse, daher zugänglich, es ist direkt wie:

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

, wenn im Code Ihrer asp.net Seite genannt.

Um es in einer Klasse verwenden Sie gehen die Seite (oder eine Kontrolle auf der Seite) in die Klasse im Konstruktor haben passieren. Selbst dann bin ich sicher nicht, dass Sie es in der Art und Weise zu verwenden, wäre in der Lage Sie angegeben haben. Sie würden wahrscheinlich etwas Ähnliches tun:

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

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

Und dann in Ihrer asp.net Seite so etwas wie:

var navPath = new NavigationPage(this);

Andere Tipps

Statt ResolveClientUrl auf das Page-Objekt aufzurufen (oder nicht kontrolliert werden), können Sie auch VirtualPathUtility.ToAbsolute("~/home.aspx"); verwenden, die das gleiche Ergebnis wie der Aufruf von ResolveUrl("~/home.aspx"); geben

Bit alt, aber helfen könnte jemand. Mit:

using System.Web.UI;

Und in dem Code ein:

new Control().ResolveClientUrl("Path");

für mich gearbeitet, ich benutze Web Application und nicht die Web-Site-Lösung, though.

Viele Grüße

Ich fand VirtualPathUtility.ToAbsolute zu arbeiten sehr gut für meine Zwecke.

Arbeitete perfekt:

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();

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top