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 Core см. Stackoverflow.com/q/55741977/11683 .
GSerg

Ответы:


155

Я думаю, вам следует использовать этот Redirectметод вместе с Url.RouteUrl.

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

Как этот ответ, но разве это не вызывает рендеринг для клиента, а затем новый запрос к серверу, за которым следует другой рендеринг? Если да, то есть ли другой способ избежать этого?
Жак

1
Это решение очень сложно протестировать, но вполне может быть единственным решением.
Джош Кодрофф

22

Другая альтернатива Url.Action:

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