¿Cómo puedo generar una URL que apunte a una acción de controlador desde un método auxiliar fuera del controlador?¿Cómo puedo generar una URL fuera de un controlador en ASP.NET MVC?
Respuesta
Pass UrlHelper a su función de ayuda y entonces se podría hacer lo siguiente:
public SomeReturnType MyHelper(UrlHelper url, // your other parameters)
{
// Your other code
var myUrl = url.Action("action", "controller");
// code that consumes your url
}
umm, si ya tiene el UrlHelper, ¿por qué llamar a este método? – hunter
@hunter: OP tiene un helper, necesita la url en ese helper, sugiero que se pase UrlHelper a su ayudante para generar la url que quiere. Edité mi respuesta para dejar más claro lo que intento sugerir. –
¿No puedo acceder a UrlHelper desde una clase estática o algo construido en asp.net mvc? Sin pasar el UrlHelper. –
Dado que es probable que desee utilizar el método en una vista, se debe utilizar la propiedad Url
de la vista. Es de tipo UrlHelper
, lo que le permite hacer
<%: Url.Action("TheAction", "TheController") %>
Si se quiere evitar ese tipo de referencias de cadenas en sus puntos de vista, se podría escribir métodos de extensión en UrlHelper
que lo crea para usted:
public static class UrlHelperExtensions
{
public static string UrlToTheControllerAction(this UrlHelper helper)
{
return helper.Action("TheAction", "TheController");
}
}
que se utilizaría este modo:
<%: Url.UrlToTheControllerTheAction() %>
podría utilizar el siguiente si usted tiene acceso a la HttpContext
:
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
gracias ... tanto;) – Pawan
Esta debería ser la respuesta correcta. Simplemente pase el objeto al método (la respuesta correcta actual) es un poco obvio y no es específico de UrlHelper. – nashwan
Se pudo proporcionar mediante inyección (Autofac) con la siguiente línea; 'builder.Register (context => new UrlHelper (context.Resolve
Usando la respuesta de L01NL, podría ser importante tener en cuenta que el método de Acción también obtendrá el parámetro actual si se proporciona uno. Por ejemplo: proyecto
edición con id = 100 Url es http://hostname/Project/Edit/100
urlHelper.Action("Edit", "Project")
vuelve http://hostname/Project/Edit/100
mientras urlHelper.Action("Edit", "Project", new { id = (int?) null });
vuelve http://hostname/Project/Edit
- 1. Generar URL completa ASP.NET MVC Razor Vistas
- 2. ¿Cómo puedo generar un trace.axd completo en ASP.NET MVC?
- 3. ¿Generar URL completo en MVC?
- 4. manejo (fuera de control) en ASP.NET MVC
- 5. asp.net controlador genérico mvc
- 6. ¿Cómo puedo crear una URL amigable en ASP.NET MVC?
- 7. RavenDb con ASP.NET MVC 3 - ¿Cómo generar URL con ID?
- 8. ASP.NET MVC: Controlador simulado.Url.Action
- 9. ASP.NET MVC pasar un ID en una ActionLink al controlador
- 10. Generando una URL de acción en JavaScript para ASP.NET MVC
- 11. ASP.NET MVC SEO URL
- 12. ASP.NET MVC - Eliminar el nombre del controlador de la URL
- 13. Enrutamiento MVC sin controlador en la url
- 14. ¿Cómo generar documentación para Asp.Net MVC?
- 15. ¿Cómo puedo publicar una matriz de cadenas en el controlador MVC de ASP.NET sin un formulario?
- 16. Cómo generar un enlace de página emergente en ASP.NET MVC
- 17. ASP.NET MVC URL de imagen generadas dinámicamente
- 18. URL de minúsculas en ASP.NET MVC
- 19. Generar URL en MVC de código subyacente
- 20. Generar direcciones URL utilizando T4MVC en una acción de controlador
- 21. URL actual en asp.net mvc
- 22. ASP.NET MVC URL predeterminada Ver
- 23. Asp.Net Mvc - Cómo tener un "controlador" en la vista compartida
- 24. ¿Cómo accedo a Request.cookies en un controlador ASP.NET MVC?
- 25. Determinando qué controlador y qué acción están manejando una URL particular en ASP.NET MVC
- 26. ¿Puedo modificar una ruta MVC fuera de Global.asax?
- 27. ASP.NET-MVC. ¿Cómo obtener el nombre del controlador desde una url?
- 28. ¿Cómo puedo generar slugs URL en Perl?
- 29. Encriptación de una identificación en una URL en ASP.NET MVC
- 30. Devolver documento PDF de Asp.net controlador MVC
posible duplicado de [ASP.NET MVC - Acceso de Url.GenerateUrl Fuera del controlador] (http://stackoverflow.com/questions/3722352/asp-net-mvc-accessing-url-generateurl-from-outside-the-controller) –
Supongo ¿no estás hablando del UrlHelper de View tampoco? – dotjoe
Ninguna de las respuestas es verdaderamente * una respuesta * en absoluto. –