2011-10-26 56 views
19

MVC 3.net我想添加一个锚到结束一个URL。如何将锚标记添加到我的网址?

我试图包括一个锚查询字符串,但哈希'#'变成%23或类似的URL中的。

有没有办法解决这个问题?

+1

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

回答

36

还有就是ActionLink帮手,它允许您指定片段的过载:

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

将产生(假设默认路由):

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

UPDATE:

,如果你想在控制器动作中执行重定向,你可以使用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

不错,不知道这一点。谢谢! –

+0

谢谢达林。在这种情况下,我正在使用重定向到操作来从控制器生成一个url,并且它只有6个重载不包含fragment。任何解决方案? – DevDave

+4

在这种情况下,您可以使用控制器中的[UrlHelper.GenerateUrl](http://msdn.microsoft.com/en-us/library/ee703653.aspx)方法,该方法允许您指定片段,然后重定向到产生的网址。我已更新我的帖子以提供示例。 –