routeconfig route net mvc examples attribute asp asp.net-mvc asp.net-mvc-routing

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) %>