Domanda

Sto cercando un modo per risolvere un URL relativo come faresti con una pagina o un'istanza di controllo (MSDN DOCS) come:

Page.ResolveUrl("~/common/Error.aspx");

... ma quando ho solo un httpcontext a disposizione a me, come quando sono in un httphandler.

Dovrò utilizzare una funzione personalizzata, come quella vista qui?

O esiste un modo per ottenere la funzione sottostante utilizzata dalla pagina.

È stato utile?

Soluzione

Prova a ottenere la pagina dal gestore e usa ResolveUrl, o crea un oggetto di controllo ...

(HttpContext.Current.Handler as Page).ResolveUrl("~/virtualpath");

O usare VirtualPathUtility.ToAppRelative(string) o VirtualPathUtility.ToAbsolute(string)

Per esempio:

System.Web.VirtualPathUtility.ToAbsolute("~/Styles/Contoso.xslt");

ritorna

/WebSite/Styles/Contoso.xslt

Altri suggerimenti

Questa domanda su così (ASP.NET: utilizzando System.Web.UI.Control.Resolveurl () in una funzione condivisa/statica) sembra un po 'utile ... Fondamentalmente, puoi usare il Virtualpathutility Classe che è sotto lo spazio dei nomi System.Web. Esiste una risposta aggiuntiva a quella domanda che dice di fare attenzione ai parametri di querystring, ma viene fornita anche una soluzione.

Allo stesso tempo, il codice di Rick Strahl è piuttosto pulito!

Usa qualcosa del genere: i controlli è un nome di cartella nell'applicazione e MyController è il nome del controller. Per creare e istanza e caricare il controller puoi farlo da:

Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx"));

Spero che sia di aiuto.

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