Necesito generar algunas URL en un modelo en ASP.NET MVC. Me gustaría llamar a algo como UrlHelper.Action () que usa las rutas para generar la URL. No me importa llenar los espacios en blanco habituales, como el nombre de host, el esquema, etc.
¿Hay algún método que pueda llamar para eso? ¿Hay alguna manera de construir un UrlHelper?
asp.net-mvc
urlhelper
pupeno
fuente
fuente
Respuestas:
Consejo útil, en cualquier aplicación ASP.NET, puede obtener una referencia del HttpContext actual
que se deriva de System.Web. Por lo tanto, lo siguiente funcionará en cualquier lugar de una aplicación ASP.NET MVC:
Ejemplo:
Llamar a la
Link
propiedad en un objeto MyModel creado devolverá la URL válida para ver el Modelo basado en el enrutamiento en Global.asaxfuente
using
para ambosSystem.Web
ySystem.Web.Mvc
Me gusta la respuesta de Omar, pero eso no me funciona. Solo para el registro, esta es la solución que estoy usando ahora:
fuente
Un UrlHelper se puede construir desde una acción de Controlador con lo siguiente:
Fuera de un controlador, se puede construir un UrlHelper creando un RequestContext desde RouteTable.Routes RouteData.
(Según la respuesta de Brian, con una corrección de código menor agregada).
fuente
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
this.ControllerContext.RequestContext
es aHttpRequestContext
, y el constructor deUrlHelper
espera aRequestContext
. Ambas clases no están relacionadas.Sí, puedes instanciarlo. Puedes hacer algo como:
RouteTable.Routes
es una propiedad estática, por lo que debería estar bien allí; para obtener unaHttpContextBase
referencia,HttpContextWrapper
toma una referenciaHttpContext
y laHttpContext
entrega.fuente
Después de probar todas las otras respuestas, terminé con
Los que odian odiarán ¯ \ _ (ツ) _ / ¯
fuente
Estaba tratando de hacer algo similar desde una página (fuera de un controlador).
UrlHelper no me permitió construirlo tan fácilmente como Pablos responde, pero luego recordé un viejo truco para hacer lo mismo:
fuente
Creo que lo que estás buscando es esto:
fuente