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


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);

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);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.