La mia applicazione è stata implementata utilizzando MVC 3, .net. Sto provando a generare un file excel con un clic di un pulsante. La chiamata all'azione del controller viene eseguita utilizzando Ajax. Il mio problema principale è: durante la generazione del file sto provando a visualizzare un'immagine sullo schermo per far sapere all'utente l'operazione in entrata. Posso visualizzare molto bene l'immagine ma non posso nasconderla dopo che l'operazione è stata completata. I codei sto usando è: codiceNascondere l'immagine utilizzando Javascript dopo che l'azione del controller è stata completata MVC3
Javascript: codice
$("input.DownloadExcelReport").click(function (e) {
e.preventDefault();
var parameter = -- code to fetch parameter value;
var outputViewUrl = (the url is created here);
showLoading(); -- This function displays the image
window.location.href = outputViewUrl;
});
Azione Controller:
public ActionResult DownExcelReportForAssortment(Guid parameter)
{
try
{
//the contents for the file generation are fetched here..
// Write contents to excel file
if (memoryStream != null)
{
var documentName = "Report.xls";
byte[] byteArrary = memoryStream.ToArray();
return File(byteArrary, "application/vnd.ms-excel", documentName);
}
}
catch (Exception ex)
{
LogManager.LogException(ex);
}
}
non restituire un risultato JSON per la chiamata javascript metodo in cui posso scrivere il codice per nascondi l'immagine Sto restituendo un file che può essere salvato dall'utente e l'azione è completata.
Può qualcuno suggerire/aiutarmi come nascondere l'immagine una volta completata l'operazione di generazione del file?
apprezzato l'aiuto ...
Per evitare problemi relativi ai cookie, preferisco gestirlo utilizzando una variabile di sessione. Quindi imposti la Session Variable dopo il lungo codice in esecuzione nella tua azione e utilizzi uno script di polling simile nel tuo js che invia richieste ajax a un'altra azione che verifica se la sessione esiste. Se lo fa, uccidi la sessione e restituisci una risposta "vera" al callback di js e spegni il caricatore. –