ASP.Net MVC RedirectToAction con ancora


84

Ho il seguente problema: Ad esempio, ho un percorso come questo:

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

C'è un modo utilizzando il metodo RedirectToAction per accedere all'URL in questo modo:

forums/thread/{threadOid}/last#postOid


2
Per ASP.NET MVC Core, vedere stackoverflow.com/q/55741977/11683 .
GSerg

Risposte:


155

Penso che dovresti usare il Redirectmetodo insieme a Url.RouteUrlper realizzarlo.

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

Ti piace questa risposta, ma questo non causa un rendering al client, quindi una nuova richiesta al server seguita da un altro rendering? In tal caso, esiste un altro modo per evitarlo?
Jacques

1
Questa soluzione è molto difficile da testare, ma potrebbe essere l'unica soluzione.
Josh Kodroff

22

Un'altra alternativa con Url.Action:

return Redirect(Url.Action("ShowThreadLastPostPage", "Thread", new { threadOid = threadOid }) + "last#" + postOid);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.