2011-02-04 8 views
55

Busco una manera de resolver una dirección URL relativa de la manera que lo haría con una página o controlar instancia (MSDN Docs), tales como:ResolveUrl sin una página ASP.NET

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

... pero cuando solo tengo un HttpContext disponible, como cuando estoy en HttpHandler.

¿Tendré que usar una función personalizada, como la que se ve here?

¿O hay una manera de llegar a la función subyacente utilizada por la Página.

Respuesta

16

Esta pregunta en SO (ASP.Net: Using System.Web.UI.Control.ResolveUrl() in a shared/static function) parece útil ... Básicamente, puede utilizar la clase VirtualPathUtility que se encuentra en el espacio de nombres System.Web. Hay una respuesta adicional a esa pregunta que dice que tenga cuidado con los parámetros de QueryString, pero también se proporciona una solución.

¡Al mismo tiempo, el código de Rick Strahl es bastante limpio!

+0

que *** buenos patrones y prácticas ***? 'System.Web.VirtualPathUtility',' HttpContext.Current.Handler' o 'Código de Rick Strahl' – Kiquenet

0

Use algo como esto - Controles es un nombre de carpeta en su aplicación y myController es el nombre del controlador. para crear e instancia y cargar el controlador puede hacerlo por:

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

Espero que esto ayude.

Cuestiones relacionadas