ASP.Net:Utilizzando Sistema.Web.Interfaccia utente.Di controllo.ResolveUrl() in un comune/funzione statica

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

Domanda

Qual è il modo migliore per utilizzare ResolveUrl() in un comune/funzione statica in Asp.Net?La mia soluzione attuale per VB.Net è:

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

O C#:

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

Ma mi rendo conto che non è il modo migliore di chiamata.

È stato utile?

Altri suggerimenti

Vale la pena notare che, sebbene il Sistema.Web.VirtualPathUtility.ToAbsolute è molto utile qui, è non un sostituto perfetto per il Controllo.ResolveUrl.

C'è almeno una differenza significativa:Di controllo.ResolveUrl gestisce le Stringhe di Query molto bene, ma sono loro a provocare VirtualPathUtility per lanciare un HttpException.Questo può essere assolutamente mistificatorio la prima volta che mi succede, soprattutto se siete abituati al modo in cui il Controllo.ResolveUrl opere.

Se si conosce l'esatta struttura della Stringa di Query che si desidera utilizzare, questo è abbastanza facile da risolvere, e cioè:

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

...ma se la Stringa di Query è sempre passato da una fonte sconosciuta, allora si sta andando ad avere bisogno di analizzare fuori in qualche modo.(Prima di arrivare troppo in profondità in che, si noti che il Sistema di.Uri potrebbe essere in grado di farlo per voi).

Io tendo ad usare HttpContext.Corrente per ottenere la pagina, quindi eseguire qualsiasi pagina web, i metodi di controllo off che.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top