ASP.Net C # ResolveClientUrl innerhalb der Klasse
-
19-09-2019 - |
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?
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();
}