Digamos que tengo una acción de controlador que elimina un elemento de la cesta de la compra de un usuario. Esta acción del controlador se desencadena al realizar una POST a la url ~/delete/{id}. Si tengo varias páginas en mi aplicación que se publicarán en esta url, ¿cómo construyo la acción del controlador para redirigir a la página que se publicó en ella?¿Cómo se redirecciona a la página de llamadas en ASP.NET MVC?
Respuesta
Nunca lo he intentado, pero puede usar el encabezado Referer para saber de dónde viene la publicación u obtener e intentar hacer coincidir la URL con una ruta.
Debe proporcionar un parámetro RedirectToUrl desde la página de publicación.
Confiar en los encabezados de referencia no es una buena práctica.
En su lugar, hacer algo como esto:
public ActionResult Delete(int id, string RedirectToUrl)
{
// check if RedirectToUrl is null or empty and redirect accordingly
}
En la vista de publicación o vista parcial puede proporcionar el parámetro de varias maneras:
<%= Html.Hidden("RedirecToUrl","/my/lovely/url") %>
o
<form action="/item/delete/22?RedirectToUrl=/my/lovely/url">
I preferiría la primera opción.
Lo primero que haría es usar Ajax.ActionLink, y si el usuario tiene Javascript activado, nunca abandonaría la página. Esta es la mejor solución. Si no quiere un enlace, también puede tener un formulario Ajax. Cualquiera de estos podría usar el método DELETE o POST.
Para manejar el caso en que Javascript está desactivado, cuando detecta en el controlador que el POST no se realizó con Ajax (Request.IsAjaxRequest es falso), puede mirar la propiedad Request.UrlReferer para obtener el URL de la página de referencia. Si esto no es nulo, puede usar un RedirectResult para volver a esta página. Si es nulo, elija una página de destino predeterminada, probablemente algo así como "Su artículo ha sido eliminado, haga clic aquí para seguir comprando". Es probable que esto último rara vez sea golpeado.
Simplemente use el encabezado URL Referer [sic].
var requestFrom = Request.UrlReferrer
Puede encontrar la documentación en: http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx
La única vez que esto no iba a funcionar es cuando se solicita directamente a la página, pero en ese caso no tendría ningún lugar para redirigir a de todos modos .
También existe la opción de hacer lo único asincrónico usando AJAX, de modo que su acción Eliminar solo hace lo que describe y no es responsable de hacer algo fuera de su propósito de eliminación.
Si está utilizando WCSF (Web Client Software Factory) para implementar el patrón MVC, puede usar PageFlow para realizar toda la navegación.
Ej: -
PageFlow.Next(); o PageFlow.Anterior();
Eso es lo que hago:
public ActionResult ResendActivationEmail()
{
// Do other things here
return new RedirectResult(Request.UrlReferrer.AbsoluteUri);
}
- 1. Redirecciona a la página 404 programáticamente usando asp.net MVC
- 2. Redirecciona la página asp.net mvc de la clase de lógica de negocios
- 3. ¿Cómo se indica visualmente la página actual en ASP.NET MVC?
- 4. Espere la página en ASP.NET MVC
- 5. Pasar datos a la página maestra en ASP.NET MVC
- 6. ¿Cómo pasar las metaetiquetas de la página en ASP.NET MVC?
- 7. asp.net mvc parámetro de la página a una vista parcial
- 8. Cómo comprobar que la página se redirige de la página anterior o no en asp.net
- 9. página ASP.NET MVC/subpágina enrutamiento
- 10. ASP.NET MVC RenderAction vuelve a mostrar toda la página
- 11. ASP.NET MVC - Destacando la página actual en la navegación
- 12. ¿Cómo se establece la página de inicio para la depuración en una aplicación ASP.NET MVC?
- 13. C# ASP.NET MVC Volver a la página anterior
- 14. Ciclo de vida de la página Razor en ASP.NET MVC
- 15. ¿Cómo se borra User.Identity.Name en ASP.NET MVC?
- 16. ASP.NET MVC 3 Vista parcial en la página de diseño
- 17. ¿Cómo se prueba la autorización de la página web mediante ASP.NET MVC?
- 18. ASP.NET MVC: caracteres extraños en la página de error
- 19. Cómo generar un enlace de página emergente en ASP.NET MVC
- 20. ASP.NET MVC Enrutamiento para comenzar en la página html
- 21. ASP.NET MVC página de carga con AJAX
- 22. Múltiples formularios en la misma página ASP.NET MVC
- 23. ¿Cómo implemento una página intersticial "cargando ..." en ASP.NET MVC?
- 24. redirigir a la página actual en ASP.Net
- 25. Asp.net MVC Autorizar el atributo, redirigir a la página personalizada "sin derechos"
- 26. ¿Cómo implementa la paginación en ASP.NET MVC?
- 27. ¿Cómo se llama Error.cshtml en ASP.NET MVC?
- 28. Tiempo de generación de página - ASP.Net MVC
- 29. Botón ASP.NET haga clic en redirigir a la nueva página
- 30. Redirigir a los usuarios de la página de edición a la página de llamadas
La mayoría de los sistemas de estadísticas se basan en la cabecera árbitro saber si la solicitud proviene. No es confiable, pero si tengo que elegir entre cambiar cada enlace en un sitio web y confiar en el encabezado del referer para redirigir, elegiría el último, o crearía un enlace de acción ajax como sugiere tvanfosson. –
sí, siempre es una compensación. Sin embargo, cambiar todos los enlaces de un sitio web me suena bastante mal. Si está probando sus controladores, el parámetro de redirección también será más fácil de probar. –
Esto es lo que hacemos, pero recomiendo encarecidamente "desinfectar" la URL de redireccionamiento pasada e ignorarla si no es parte de su sitio. Esto se aplica también a los encabezados de referencia. –