webform tutorial net mvc form entre ejemplos diferencias asp asp.net-mvc webforms

tutorial - Espere la página en ASP.NET MVC



webform tutorial (5)

Una página ejecuta varias tareas y tarda mucho tiempo en procesarse. Queremos brindarle al usuario sus comentarios a medida que se completa cada tarea.

En los formularios web ASP.NET usamos Response.Flush()

¿De qué manera abordarías esto en ASP.NET MVC?


Aún puede usar Response.Write () y Response.Flush () para cualquier estado que desee enviar por cable. O si tiene su progreso en un control de usuario, podría hacer algo como:

this.PartialView("Progress").ExecuteResult(this.ControllerContext); this.Response.Flush();

desde su controlador mientras hace su larga operación en el método de acción del controlador.

Depende de usted elegir este o el enfoque del lado del cliente como se menciona en los comentarios aquí, solo quería señalar que el lado del servidor aún es posible.


Hay dos formas básicas:

  1. Sondee una página de servidor que devuelve el estado, luego, una vez que la operación finaliza, redirige a una página de resultados. MVC no tiene nada que ver con esto, necesitarías usar una variable de servidor para almacenar objetos / estado; esta es una forma que es más relevante para una aplicación Asp.NET estándar ya que (presumiblemente) usas variables de sesión, etc. de todas formas.

  2. Llamada AJAX del cliente a un servicio web en el servidor. Asp.NET MVC va a implementar el marco jQuery, así que úselo para la llamada del cliente y el manejo de eventos para la respuesta. Esto estaría más en el espíritu de MVC que no / no debería usar el estado de sesión, etc.


Puedes hacerlo en el lado del cliente. En cada paso, establece alguna variable de sesión con el paso actual. Luego, realiza otra acción en su controlador llamada llamada: "GetProgress" y asigne una vista y URI para ella.

En la acción, comprobará esta sesión y devolverá el progreso actual de su tarea. En el lado del cliente, cree un temporizador (es decir, setTimeOut) e invoque el URI de la acción del controlador posterior cada cantidad específica de tiempo: 1 segundo más o menos. Eso es.



Yo personalmente consideraría dos opciones:

  • redireccionar para esperar página (s), luego disparar acciones
  • Hazlo estilo ajax