2008-11-30 17 views
8

Actualmente estoy intentando crear un control de carga con la barra de progreso en MVC usando jquery. Sin embargo, sigo encontrándome con un problema porque mvc no funciona en hilos paralelos.ASP.NET MVC Session Estado

Cuando cargo un archivo y muestro el progreso durante la carga de JS realizada a través de varias devoluciones de llamada al servidor, estoy tratando de obtener información sobre el estado de carga actual, pero la respuesta del servidor solo vuelve cuando el archivo ha sido cargado.

¿Conoces alguna forma de obtener consultas de estado de sesión constantemente en MVC o cuando se realiza una solicitud?

Realmente agradecería un poco de ayuda y estoy seguro de que otros lo harían si alguien sabe la respuesta!

Respuesta

4

Perderá su estado de vista si llama a una acción que devuelve una Vista. Puede pasar datos entre acciones usando TempData si lo desea, pero eso probablemente no resolverá su problema. Me parece que lo que quieres aquí es una acción que devolverá un elemento JSON al que puedes llamar con algún javascript asíncrono.

Para su acción tendría:

public ActionResult GetSuggestions(string searchText) 
{ 
    return Json(new { SearchText = searchText + "completestring"}); 
} 

Y luego en el formulario que tienen algo de JavaScript asíncrono utilizando jQuery:

function startAutoComplete() { 
    var searchText = $("#inputText").val(); 
    $.getJSON("/Search/GetSuggestions?searchText=" + searchText, null, autoCompleteResponse); 
} 

function autoCompleteResponse(data) { 
    if (data.SearchText) { 
     $("#inputText").val(data.SearchText); 
     $("#inputText").select(); 
    } 
} 

Esto le permitirá obtener alguna información de su servidor sin publicar el formulario y mantener intacto el estado de visualización del cliente.

There is a full write up of the example here que pueden ayudar.

+0

'return Json (new {SearchText = searchText +" completa la cadena "}," text/json ", JsonRequestBehavior.AllowGet);' – Bellash