Estoy escribiendo un método de ayuda para ASP.NET MVC y necesito llamar a Url.Content para obtener una URL adecuada para el contexto. Sin embargo, para crear un nuevo UrlHelper() necesito obtener el RequestContext actual (System.Web.Routing.RequestContext para ser preciso) y no estoy seguro de cómo obtenerlo. ¿Nadie sabe?¿Cómo se obtiene acceso al System.Web.Routing.RequestContext actual dentro de un método de ayuda personalizado en ASP.NET MVC?
Respuesta
Noté que esto aún no fue respondido. A partir de MVC 1.0 puede hacer:
public static string NewHelperMethod(this HtmlHelper helper)
{
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
Quería saber cómo hacer esto desde el controlador, esta respuesta me dio suficiente información para descubrir que quería ControllerContext.RequestContext. – lambacck
No cree uno nuevo. Sólo extender el UrlHelper existente, al igual que lo extiendes HtmlHelper:
public static string IdLink(this UrlHelper helper, Guid id)
{ //...
Si tiene que usar tanto HtmlHelper y UrlHelper, pasar a uno de ellos como ("este" no-) argumento regular.
Como se mencionó anteriormente, simplemente extienda el HtmlHelper y el contexto quedará expuesto de esa manera. Por ejemplo:
public static string ExtensionMethodName(this HtmlHelper html,object o)
{
html.ViewContext.HttpContext.Request.Uri ... etc
}
Es posible que haya encontrado una respuesta en otro lugar, pero aquí va;
En una acción del controlador, se puede llegar a la RequestContext actual de este modo:
public ActionResult SomeAction(){
var helper = new UrlHelper(this.ControllerContext.RequestContext);
...
}
Si la corriente IHttpHandler es MvcHandler, puede utilizar
((MvcHandler)HttpContext.Current.Handler).RequestContext
Esto es realmente lo que necesitaba ... de un contexto verdaderamente estático – Kevin
¡Me salvó el día, muchas gracias! –
- 1. Acceso System.Web.Routing.RequestContext de contexto estático en MVC 2,0
- 2. ASP.NET MVC - Obtener ViewContext desde el método de ayuda
- 3. ASP.NET MVC Obtiene el archivo de ruta de acceso virtual
- 4. asp.net Después de un Server.Transfer, ¿cómo obtiene la ruta de acceso de la página actual?
- 5. ASP.NET MVC obtener el host actual
- 6. URL actual en asp.net mvc
- 7. ¿Cómo se obtiene un ID personalizado para hacer uso de HtmlHelper en MVC
- 8. ¿Cómo llamo a un método de ayuda de Rails desde dentro de otro método de ayuda?
- 9. ASP.NET MVC que busca el nombre de usuario actual en un filtro de acción personalizado
- 10. Cómo obtener el ID de ruta actual dentro de una Vista desde la URL (ASP.NET MVC)
- 11. Página de error personalizado en asp.net mvc 3
- 12. Cómo implementar un proveedor de caché personalizado con ASP.NET MVC
- 13. Cómo crear un método de extensión CheckBoxListFor en ASP.NET MVC?
- 14. ASP.NET MVC Textarea Ayuda HTML agregando líneas al usar AntiXssLibrary
- 15. ¿Cómo se indica visualmente la página actual en ASP.NET MVC?
- 16. ASP.net MVC obtener viewengine actual
- 17. Asp.Net Acceso global.asax al objeto de página solicitado actual
- 18. Las teclas de acceso en ASP.NET MVC
- 19. ASP.NET MVC - Anulación de prueba unitaria Método de inicialización
- 20. ¿Cómo usar WebClient dentro de ASP.NET MVC de forma asincrónica?
- 21. ¿Cómo se obtiene el directorio actual en un marco compacto?
- 22. Obtienen el directorio actual en asp.net mvc
- 23. ASP.NET MVC dentro de DotNetNuke?
- 24. ¿Cómo puedo probar un filtro ActionFilter personalizado en ASP.Net MVC
- 25. ¿Se puede acceder al HttpContext dentro de un ValidationAttribute en ASP.NET MVC?
- 26. Ayuda con ASP.NET MVC HtmlHelper API Diseño
- 27. Autenticación de formulario personalizado/Esquema de autorización en ASP.net MVC
- 28. Cómo usar ASP.NET MVC Html Helpers desde un ayudante personalizado?
- 29. ¿Cómo uso el Ayudante HTML ValidationMessage de ASP.NET MVC dentro de mi propio asistente personalizado?
- 30. ¿Cómo funciona el método ASP.NET MVC UpdateModel()?
La ubicación contexto dependerá de lo que el método de extensión se extenderá. ¿Esto se usará en una vista, controlador o en otro lugar? –