Supongamos que tengo algunas páginas
some.web/articles/details/5
some.web/users/info/bob
some.web/foo/bar/7
que puede llamar a un controlador de utilidad común como
locale/change/es
o authorization/login
¿Cómo consigo estos métodos ( change
, login
) para redirigir a las acciones anteriores ( details
, info
, bar
) mientras pasa los parámetros anteriores a ellos ( 5
, bob
, 7
)?
En resumen: ¿cómo redirijo a la página que acabo de visitar después de realizar una acción en otro controlador?
asp.net-mvc
routing
redirect
adolfojp
fuente
fuente
Request.Url.AbsolutePath.ToString()
ya que el métodoAccountController
'sLogOn
contiene comprobaciones de URL que comienzan con'/'
, etc.' 'GET Index
entoncesGET Edit
. La URL de referencia es entonces,Index
pero cuando el usuario lo hace,POST Edit
la referencia ahora esEdit
de la solicitud GET anterior. ¿Cómo puedo asegurarme de quePOST Edit
conoce la URL a la que remitió al usuarioGET Edit
?Si desea redirigir desde un botón en la Vista, puede usar:
fuente
Si no le preocupan las pruebas unitarias, simplemente puede escribir:
fuente
Una sugerencia sobre cómo hacer esto de manera que:
.
Puede usar la redirección dentro de la vista de esta manera:
fuente
En Mvc usando html simple en Ver página con java script onclick
Esto funciona muy bien. La esperanza ayuda a alguien.
@JuanPieterse ya ha respondido usando
@Html.ActionLink
así que si es posible alguien puede comentar o responder usando@Url.Action
fuente
Pase un parámetro returnUrl (codificado en url) a las acciones de cambio e inicio de sesión y redirija dentro a este returnUrl dado. Su acción de inicio de sesión podría verse así:
fuente
Estoy usando .Net Core 2 MVC, y este funcionó para mí, en el uso del controlador
HttpContext.Request.Headers["Referer"];
fuente
Puede volver a la página anterior utilizando la
ViewBag.ReturnUrl
propiedadfuente
Para construir dinámicamente returnUrl en cualquier vista, intente esto:
Relacionado: URL de retorno dinámico MVC3 (igual pero desde cualquier controlador / acción)
fuente
Para ASP.NET Core Puede usar el atributo asp-route- *:
Otro ejemplo detallado: imagine que tiene un controlador de vehículo con acciones
Índice
Detalles
Editar
y puede editar cualquier vehículo desde el índice o desde los detalles, por lo que si hizo clic en editar desde el índice, debe volver al índice después de la edición y si hizo clic en editar desde los detalles, debe volver a los detalles después de la edición.
En tu controlador:
fuente