ASP.Net MVC RedirectToAction z kotwicą

84

Mam następujący problem: Na przykład mam taką trasę:

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

Czy istnieje sposób za pomocą metody RedirectToAction, aby przejść do adresu URL w następujący sposób:

forums/thread/{threadOid}/last#postOid

inikulina
źródło
2
Aby uzyskać ASP.NET MVC Core, zobacz stackoverflow.com/q/55741977/11683 .
GSerg

Odpowiedzi:

153

Myślę, że powinieneś użyć tej Redirectmetody, Url.RouteUrlaby to osiągnąć.

return Redirect(Url.RouteUrl(new { controller = "Thread", action = "ShowThreadLastPostPage", threadOid = threadId }) + "#" + postOid);
Mehrdad Afshari
źródło
Podobnie jak ta odpowiedź, ale czy nie powoduje to renderowania do klienta, a następnie nowego żądania do serwera, po którym następuje kolejne renderowanie? Jeśli tak, czy można tego uniknąć w inny sposób?
Jacques
1
To rozwiązanie jest bardzo trudne do przetestowania, ale może być jedynym rozwiązaniem.
Josh Kodroff,
20

Kolejna alternatywa z Url.Action:

return Redirect(Url.Action("ShowThreadLastPostPage", "Thread", new { threadOid = threadOid }) + "last#" + postOid);
Jo Smo
źródło