2011-10-26 24 views
19

MVC 3.net Tôi muốn thêm một neo vào cuối url.Tôi làm cách nào để thêm thẻ neo vào URL của mình?

Tôi đã cố gắng bao gồm chuỗi truy vấn neo nhưng hàm băm '#' thay đổi thành% 23 hoặc thứ gì đó tương tự trong url.

Có cách nào để giải quyết vấn đề này không?

+1

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

Trả lời

36

Có một tình trạng quá tải của các helper ActionLink cho phép bạn chỉ định các đoạn:

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

sẽ tạo ra (giả sử các tuyến đường mặc định):

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

UPDATE:

và nếu bạn muốn thực hiện điều này trong hành động điều khiển thực hiện chuyển hướng, bạn có thể sử dụng các phương pháp 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

Nice, không biết về điều đó. Cảm ơn! –

+0

nhờ darin. trong trường hợp này tôi đang sử dụng chuyển hướng đến hành động để tạo ra một url từ một bộ điều khiển, và nó chỉ có 6 tình trạng quá tải không bao gồm đoạn. bất kỳ giải pháp cho điều này? – DevDave

+4

Trong trường hợp này, bạn có thể sử dụng phương thức [UrlHelper.GenerateUrl] (http://msdn.microsoft.com/en-us/library/ee703653.aspx) trong bộ điều khiển cho phép bạn chỉ định một đoạn và sau đó chuyển hướng đến url kết quả. Tôi đã cập nhật bài đăng của mình để cung cấp một ví dụ. –

Các vấn đề liên quan