Tengo una vista parcial que se está cargando en un modal de jQuery en asp.net MVC 3. El problema es que la vista no se actualiza correctamente. Aquí está el orden de los eventos:Modelo de vista parcial de MVC sin actualizar
1) La vista principal tiene una tabla que enumera los diferentes registros de eventos. Hay un enlace en cada fila de la tabla para mostrar los detalles del evento. 2) Cuando se hace clic en el enlace de esta tabla, la vista parcial se carga en el modal.
Esto funciona bien en algunos casos, en otros casos el modelo tardará mucho en cargarse. Después de cerrar la vista parcial/modal y hacer clic en otro enlace de la tabla en la vista principal, la vista parcial se cargará mostrando los datos de la carga anterior. No es refrescante correctamente
Definición de modal en Vista principal: Cargando, por favor espere ...
<script type="text/javascript">
$(document).ready(function() {
$("#EventRegistrantSummary").dialog({
bgiframe: true, autoOpen: false, height: 500, width: 980, resizable: false, modal: true
});
});
function showEventRegistrantSummary(id) {
$.get("/Event/EventRegistrantSummary/" + id, function (data) {
$("#EventRegistrantSummary").html(data);
});
$("#EventRegistrantSummary").dialog('open'); return false;
}
</script>
controlador:
public PartialViewResult EventRegistrantSummary(Guid id)
{
ModelState.Clear();
Event e = db.Events.Single(ev => ev.ID == id);
return PartialView(e);
}
Vista parcial:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<model.Event>" %>
<% using (Ajax.BeginForm("EditUpdate", new AjaxOptions { UpdateTargetId="Target", InsertionMode= InsertionMode.Replace}))
{%>
<h6 style="text-align:center">Registration Summary: <%= Model.Name %></h6>
<div style="float:left;width:35%">
<fieldset id="Overview">
<legend>Overview</legend>
<div class="editor-label">
Total Registrants: <%= Model.BoatEventRegistrations.Count() %>
</div>
</fieldset>
</div>
<% } %>
Cualquier ayuda es muy apreciada.
¿Conoce algún beneficio de usar este método frente a controlar el almacenamiento en caché en el servidor utilizando el atributo 'OutputCacheAttribute' en el controlador? –
Si usa una llamada ajax compartida para múltiples acciones o tiene muchos métodos que necesitan evitar la caché. Manejamos alrededor del 95% de todas las publicaciones de formularios a través de jQuery debido al control otorgado. – Henry