2011-02-04 11 views
55

Sto cercando un modo per risolvere un URL relativo al modo in cui si farebbe con una pagina o controllare esempio (MSDN Docs) come ad esempio:ResolveUrl senza una pagina ASP.NET

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

... ma quando ho ho a disposizione solo HttpContext, ad esempio quando sono su HttpHandler.

Sarà necessario utilizzare una funzione personalizzata, ad esempio quella vista here?

Oppure c'è un modo per ottenere la funzione sottostante utilizzata dalla Pagina.

risposta

16

Questa domanda su SO (ASP.Net: Using System.Web.UI.Control.ResolveUrl() in a shared/static function) sembra essere di aiuto ... In sostanza, è possibile utilizzare la classe VirtualPathUtility che si trova nello spazio dei nomi System.Web. C'è una risposta aggiuntiva a quella domanda che dice di stare attenta ai parametri di QueryString, ma viene fornita anche una soluzione.

Allo stesso tempo, il codice di Rick Strahl è abbastanza bello!

+0

quali *** buoni schemi e pratiche ***? 'System.Web.VirtualPathUtility',' HttpContext.Current.Handler' o 'Codice di Rick Strahl'? – Kiquenet

0

Utilizzare qualcosa come questo - Controls è un nome di cartella nell'applicazione e myController è il nome del controller. per creare e istanza e caricare il controller è possibile farlo da:

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

Spero che questo aiuti.

Problemi correlati