ASP.Net MVC RedirectToAction з якорем


84

У мене така проблема: Наприклад, у мене такий маршрут:

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

Чи є спосіб за допомогою методу RedirectToAction перейти до URL-адреси таким чином:

forums/thread/{threadOid}/last#postOid


2
Щодо ядра ASP.NET MVC див. Stackoverflow.com/q/55741977/11683 .
GSerg

Відповіді:


153

Думаю, вам слід використовувати Redirectметод разом із цим Url.RouteUrlдля його досягнення.

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

Подобається ця відповідь, але чи не викликає це візуалізація для клієнта, а потім новий запит до сервера, за яким слідує інший рендер? Якщо так, чи є інший спосіб уникнути цього?
Jacques

1
Це рішення дуже важко перевірити, але цілком може бути єдиним рішенням.
Джош Кодров

19

Ще одна альтернатива Url.Action:

return Redirect(Url.Action("ShowThreadLastPostPage", "Thread", new { threadOid = threadOid }) + "last#" + postOid);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.