ASP.Net:Verwenden von System.Web.UI.Control.ResolveUrl() in einer gemeinsam genutzten/statischen Funktion

StackOverflow https://stackoverflow.com/questions/26796

Frage

Was ist der beste Weg, ResolveUrl() in einer Shared/Static-Funktion in Asp.Net zu verwenden?Meine aktuelle Lösung für VB.Net ist:

Dim x As New System.Web.UI.Control
x.ResolveUrl("~/someUrl")

Oder C#:

System.Web.UI.Control x = new System.Web.UI.Control();
x.ResolveUrl("~/someUrl");

Aber mir ist klar, dass das nicht die beste Art ist, es zu nennen.

War es hilfreich?

Andere Tipps

Es ist erwähnenswert, dass System.Web.VirtualPathUtility.ToAbsolute hier zwar sehr nützlich ist, es aber auch ist nicht ein perfekter Ersatz für Control.ResolveUrl.

Es gibt mindestens einen wesentlichen Unterschied:Control.ResolveUrl verarbeitet Abfragezeichenfolgen sehr gut, führt jedoch dazu, dass VirtualPathUtility eine HttpException auslöst.Dies kann beim ersten Mal völlig rätselhaft sein, insbesondere wenn Sie mit der Funktionsweise von Control.ResolveUrl vertraut sind.

Wenn Sie die genaue Struktur der Abfragezeichenfolge kennen, die Sie verwenden möchten, können Sie dies leicht umgehen, nämlich:

public static string GetUrl(int id)
{
    string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");
    return string.Format("{0}?id={1}", path, id);
}

...aber wenn die Abfragezeichenfolge von einer unbekannten Quelle übergeben wird, müssen Sie sie irgendwie analysieren.(Bevor Sie sich zu sehr damit befassen, beachten Sie, dass System.Uri dies möglicherweise für Sie erledigen kann.)

Ich verwende normalerweise HttpContext.Current, um die Seite abzurufen, und führe dann alle Methoden zur Seiten-/Websteuerung darauf aus.

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