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);
Джо Смо
источник