ASP.Net MVC RedirectToAction mit Anker

83

Ich habe folgendes Problem: Zum Beispiel habe ich eine Route wie diese:

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

Gibt es eine Möglichkeit, mit der RedirectToAction-Methode zur folgenden URL zu navigieren:

forums/thread/{threadOid}/last#postOid

Inikulin
quelle
2
Informationen zu ASP.NET MVC Core finden Sie unter stackoverflow.com/q/55741977/11683 .
GSerg

Antworten:

153

Ich denke, Sie sollten die RedirectMethode zusammen mit verwenden Url.RouteUrl, um dies zu erreichen.

return Redirect(Url.RouteUrl(new { controller = "Thread", action = "ShowThreadLastPostPage", threadOid = threadId }) + "#" + postOid);
Mehrdad Afshari
quelle
Wie diese Antwort, aber verursacht dies nicht ein Rendern für den Client und dann eine neue Anforderung an den Server, gefolgt von einem weiteren Rendern? Wenn ja, gibt es einen anderen Weg, dies zu vermeiden?
Jacques
1
Diese Lösung ist sehr schwer zu testen, kann aber durchaus die einzige Lösung sein.
Josh Kodroff
19

Eine weitere Alternative mit Url.Action:

return Redirect(Url.Action("ShowThreadLastPostPage", "Thread", new { threadOid = threadOid }) + "last#" + postOid);
Jo Smo
quelle