2011-07-21 13 views

Respuesta

76

¿Quieres decir como con el método Action en el asistente de url:

<%= Url.Action("DoThis", "MyController") %> 

o en la maquinilla de afeitar:

@Url.Action("DoThis", "MyController") 

el cual le dará una dirección URL relativa (/MyController/DoThis).

Y si se quería obtener una URL absoluta (http://localhost:8385/MyController/DoThis):

<%= Url.Action("DoThis", "MyController", null, Request.Url.Scheme, null) %> 
1

Usted puede utilizar el método Url.Action donde sólo se puede pasar el nombre del controlador y la acción que desea y generará la URL adecuada para usted, por ejemplo Hace

Url.Action("DoThis","MyController") 
+0

la sintaxis correcta es: 'Acción (actionName cuerdas , string controllerName) ', el primer param debe ser acción y el segundo es controlador –

9

Algunos días, escribí un post sobre ese mismo tema (ver How to build absolute action URLs using the UrlHelper class). Como mencionó Darin Dimitrov: UrlHelper.Action generará URL absolutas si el parámetro se especifica explícitamente.

Sin embargo, sugiero escribir un método de extensión personalizada para facilitar la lectura:

/// <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")

Cuestiones relacionadas