2011-10-26 24 views
19

MVC 3.net Quiero añadir un ancla para el final de una URL.¿Cómo puedo agregar una etiqueta de anclaje a mi URL?

Me trataron de incluir una cadena de consulta de anclaje sino que cambia el hash '#' para el 23% o algo así en la url.

¿Hay una manera de trabajar alrededor de esto?

+1

http://stackoverflow.com/questions/10690466/redirect-to-a-hash-from-the-controller-using-redirecttoaction – hidden

Respuesta

36

Hay una sobrecarga del ayudante ActionLink que le permite especificar el fragmento:

@Html.ActionLink(
    "Link Text",   // linkText 
    "Action",    // actionName 
    "Controller",   // controllerName 
    null,     // protocol 
    null,     // hostName 
    "fragment",   // fragment 
    new { id = "123" }, // routeValues 
    null     // htmlAttributes 
) 

producirá (suponiendo que las rutas por defecto):

<a href="/Controller/Action/123#fragment">Link Text</a> 

ACTUALIZACIÓN:

y si quisiera hacer esto dentro de una acción de controlador realizando una redirección podría utilizar el método GenerateUrl:

public ActionResult Index() 
{ 
    var url = UrlHelper.GenerateUrl(
     null, 
     "Action", 
     "Controller", 
     null, 
     null, 
     "fragment", 
     new RouteValueDictionary(new { id = "123" }), 
     Url.RouteCollection, 
     Url.RequestContext, 
     false 
    ); 
    return Redirect(url); 
} 
+0

Niza, no sabía nada de eso. ¡Gracias! –

+0

gracias darin. en este caso estoy usando redirigir a la acción para generar una URL desde un controlador, y que sólo tiene 6 sobrecargas no incluyendo fragmento. alguna solución a esto? – DevDave

+4

En este caso se puede utilizar el método [UrlHelper.GenerateUrl] (http://msdn.microsoft.com/en-us/library/ee703653.aspx) dentro de su controlador, el cual le permite especificar un fragmento y luego redirigir a la URL resultante He actualizado mi publicación para proporcionar un ejemplo. –

Cuestiones relacionadas