route - ASP.NET MVC: cómo obtener un camino completo hacia una acción
route controller mvc 5 (3)
Hace algunos días, escribí una publicación en el blog sobre ese mismo tema (consulte Cómo compilar URL de acción absoluta utilizando la clase UrlHelper ). Como mencionó Darin Dimitrov: UrlHelper.Action
generará URL absolutas si el parámetro del protocol
se especifica explícitamente.
Sin embargo, sugiero escribir un método de extensión personalizado por el bien de la legibilidad:
/// <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);
}
El método se puede llamar así: @Url.AbsoluteAction("SomeAction", "SomeController")
Dentro de una vista, ¿puedo obtener información completa de ruta para una acción?
Si tengo una acción llamada DoThis en un controlador MyController. ¿Puedo acceder a una ruta de "/MyController/DoThis/"
?
Puede usar el método Url.Action , donde puede pasar el nombre del controlador y la acción que desea, y generará la URL adecuada para usted, por ejemplo
Url.Action("DoThis","MyController")
Te refieres a usar el método de Action en el Ayudante de Url:
<%= Url.Action("DoThis", "MyController") %>
o en Razor:
@Url.Action("DoThis", "MyController")
que le dará una URL relativa ( /MyController/DoThis
).
Y si desea obtener una URL absoluta ( http://localhost:8385/MyController/DoThis
):
<%= Url.Action("DoThis", "MyController", null, Request.Url.Scheme, null) %>