ASP.Net MVC RedirectToAction con ancla

84

Tengo el siguiente problema: Por ejemplo, tengo una ruta como esta:

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

¿Hay alguna forma de usar el método RedirectToAction para navegar a la URL de esta manera?

forums/thread/{threadOid}/last#postOid

inikulin
fuente
2
Para ASP.NET MVC Core, consulte stackoverflow.com/q/55741977/11683 .
GSerg

Respuestas:

153

Creo que deberías usar el Redirectmétodo junto con Url.RouteUrlpara lograrlo.

return Redirect(Url.RouteUrl(new { controller = "Thread", action = "ShowThreadLastPostPage", threadOid = threadId }) + "#" + postOid);
Mehrdad Afshari
fuente
Como esta respuesta, pero ¿esto no causa un renderizado al cliente y luego una nueva solicitud al servidor seguida de otro renderizado? Si es así, ¿hay otra forma de evitar esto?
Jacques
1
Esta solución es muy difícil de probar, pero bien puede ser la única solución.
Josh Kodroff
20

Otra alternativa con Url.Action:

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