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


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

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);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.