2009-08-17 17 views
10

Tengo un ActionLink, que llama a mi ActionResult pública, y me gustaría que regrese a la página desde la que se llamó, pero ¿cómo?ActionResult volver a la página que lo llamó

+0

Su pregunta no es muy clara. De forma predeterminada, el constructor ActionLink más simple usa el mismo controlador que procesó la vista cuando crea el enlace. ¿Quiere decir que quiere que haga una llamada estilo ajax para que la página del navegador no cambie? – womp

Respuesta

24

Hay un par de trucos que puede usar para esto.

El más simple es ...

return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri); 

absoluteURI no le puede dar el camino exacto que está buscando, pero UrlReferrer debe tener la imformación que busca. Redirect devuelve una subclase de ActionResult por lo que es un valor de retorno válido.

Otra idea es basar la ubicación de redirección de los valores almacenados. Esto es útil cuando va a realizar varias solicitudes antes de que desee redireccionar, como cuando valida un formulario y muestra problemas de validación en la primera respuesta. Otra situación será cuando el referente no sea un sitio local. En cualquier caso, su referencia no será lo que usted desea y tendrá que recuperar la ubicación correcta desde otro lugar.

Implementaciones específicas incluyen el uso de un campo de entrada oculto en su formulario, estado de sesión, extracción de un valor descriminador de los datos de su ruta, o incluso un valor más constante como HttpContext.Request.ApplicationPath.

Buena suerte.

+0

Estoy en la página 'A', desde allí navego a la página 'B'. Ahora renuevo la página 'B'. En tales casos, Request.UrlReferrer devuelve 'B', sin embargo, estoy esperando 'A'. ¿Alguna ayuda? –

0

Tenga en cuenta que debido a la naturaleza sin estado de la web, su ActionResult no se "llama desde" su ActionLink sino que es simplemente una url que el usuario-agente solicitó.

Debido a esto, la única manera real "built-in" se puede saber dónde está ese usuario venía es mediante la inspección de las cabeceras de solicitud HTTP para ver cuál era la página de referencia:

string referrer = Request.Headers["referer"]; 

Usted' Entonces, será responsable de analizar el método de Acción desde esta url, si fuera a llamarlo directamente. Tenga en cuenta que este referente puede no ser un enlace dentro de su propio sitio.

Cuestiones relacionadas