2010-04-22 7 views
7

He encontrado dos recomendaciones para crear ayudantes html personalizados: amplíe uno existente o escriba su propia clase.mvc crear mi propio helper html, ¿cómo puedo acceder a httpcontext?

Prefiero mantener mi código personalizado separado, parece un poco descuidado extender ayudantes para una aplicación de tamaño decente.

Pero el beneficio que veo al extender es que 'Este HtmlHelper helper' se pasa como un parámetro, a través del cual puedo obtener ViewContext.HtmlContext.

Mi pregunta es, ¿cómo puedo rodar mi propia clase de ayuda y todavía tengo ViewContext.HtmlContext disponible para mí?

Gracias!

Edit: Lo que estoy buscando hacer es crear "MyHelperClass" que renderice algunos objetos personalizados como html. No veo la necesidad de "Extender" un helper Html ya que no estoy usando nada de lo que me ofrece. La única razón por la que tengo que extender htmlhelper actualmente es acceder a httpcontext, como lo has demostrado. Pero mi pregunta era, ¿cómo puedo acceder httpcontext en mi propia clase, sin extender un asistente existente? gracias

+1

downvotes inexplicables son realmente útiles –

Respuesta

12
public static class HtmlHelperExtensions 
{ 
    public static HttpContextBase GetContext(this HtmlHelper htmlHelper) 
    { 
     return htmlHelper.ViewContext.HttpContext; 
    } 
} 
+1

'no se puede convertir el tipo system.web.httpcontextbase a system.web.httpcontext'. ¿Debería este método devolver httpcontextbase en su lugar? –

+0

@rj, sí, está correcto, debería – mxmissile

+0

Sí, HttpContextBase, me disculpo. Dudo que realmente uses este método. Es más un ejemplo del uso de una clase estática y un método para acceder al objeto HtmlHelper.ViewContext.HttpContext cuando se encuentra dentro de un método de extensión. Es común que los proyectos tengan muchos métodos en la clase estática HtmlHelperExtensions. (Sin embargo, reservaré mi desagrado por los métodos de extensión en general para otro hilo). – bradjive

1

También puede utilizar: System.Web.HttpContext.Current.Request.RequestContext

+0

Esto me llevó a la respuesta que estaba buscando. Tenía un htmlHelper y estaba tratando de llegar a la solicitud. ¿Solución? helper.ViewContext.HttpContext.Request - Gracias – BrianLegg

Cuestiones relacionadas