ASP.Net MVC RedirectToAction với anchor


84

Tôi gặp sự cố sau: Ví dụ: tôi có tuyến đường như thế này:

routes.Add(new Route("forums/thread/{threadOid}/last", new MvcRouteHandler())
           Defaults = new RouteValueDictionary(
             new { controller = "Thread", action ="ShowThreadLastPostPage"}),
        Constraints = new RouteValueDictionary(new { threadOid = @"^\d+$" })
    }
);

Có cách nào sử dụng phương thức RedirectToAction điều hướng đến URL như thế này không:

forums/thread/{threadOid}/last#postOid


2
Đối với ASP.NET MVC Core, hãy xem stackoverflow.com/q/55741977/11683 .
GSerg

Câu trả lời:


153

Tôi nghĩ bạn nên sử dụng Redirectphương pháp cùng với Url.RouteUrlđể hoàn thành nó.

return Redirect(Url.RouteUrl(new { controller = "Thread", action = "ShowThreadLastPostPage", threadOid = threadId }) + "#" + postOid);

Giống như câu trả lời này, nhưng điều này không gây ra một kết xuất cho máy khách sau đó một yêu cầu mới đến máy chủ theo sau là một kết xuất khác? Nếu vậy, có cách nào khác để tránh điều này không?
Jacques

1
Giải pháp này rất khó thử nghiệm, nhưng nó có thể là giải pháp duy nhất.
Josh Kodroff

20

Một thay thế khác với Url.Action:

return Redirect(Url.Action("ShowThreadLastPostPage", "Thread", new { threadOid = threadOid }) + "last#" + postOid);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.