Escribí una publicación de blog llamada How to build absolute action URLs using the UrlHelper class en la que presento un método de extensión personalizado llamado AbsoluteAction
. ¡Te animo a que lo revises!
/// <summary>
/// Generates a fully qualified URL to an action method by using
/// the specified action name, controller name and route values.
/// </summary>
/// <param name="url">The URL helper.</param>
/// <param name="actionName">The name of the action method.</param>
/// <param name="controllerName">The name of the controller.</param>
/// <param name="routeValues">The route values.</param>
/// <returns>The absolute URL.</returns>
public static string AbsoluteAction(this UrlHelper url,
string actionName, string controllerName, object routeValues = null)
{
string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;
return url.Action(actionName, controllerName, routeValues, scheme);
}
ASP.NET MVC incluye una función de funcionalidad para la generación de direcciones URL absolutas, aunque no de una manera muy intuitiva.
Existen varias sobrecargas del método UrlHelper.Action()
que le permiten pasar parámetros adicionales como los valores de ruta, el protocolo a usar y el nombre de host para la URL. Si está utilizando una sobrecarga que le permite especificar el parámetro , la URL generada será absoluta. Por lo tanto, el código siguiente se puede utilizar para generar una URL absoluta para el método de acción Acerca de la HomeController:
@Url.Action("About", "Home", null, "http")
Por lo que yo sé que es la única manera de hacer esto. De cualquier manera, tendrá que actualizar todos sus enlaces para que funcione. No estoy seguro de la razón para tener enlaces absolutos en un Html.Action ... –