Moja aplikacja została zrealizowana przy użyciu MVC 3, .net. Próbuję wygenerować plik excel za jednym kliknięciem przycisku. Wywołanie akcji kontrolera odbywa się za pomocą Ajax. Moim głównym problemem jest: Podczas generowania pliku próbuję wyświetlić obraz na ekranie, aby poinformować użytkownika o operacjach. Mogę bardzo dobrze wyświetlić obraz, ale nie mogę go ukryć po zakończeniu operacji. W codei używam jest: KodUkryj obraz przy użyciu Javascript po zakończeniu działania kontrolera MVC3
JavaScript: Kod
$("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;
});
Controller Działanie:
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);
}
}
nie zwrócić wynik JSON do powołania javascript metoda, gdzie mogę napisać kod do ukryj obraz. Zwracam plik, który może zostać zapisany przez użytkownika i czynność jest zakończona.
Czy ktoś może zasugerować/pomóc mi, jak mogę ukryć obraz po zakończeniu operacji generowania pliku?
Doceń pomoc ...
Aby uniknąć problemów z plikami cookie, wolę posługiwać się tym przy użyciu zmiennej sesji. Ustawiasz zmienną sesji po długim kodzie w akcji i używasz podobnego skryptu do odpytywania w twoim js, który wysyła zapytania ajax do innej akcji, która sprawdza, czy sesja istnieje. Jeśli tak się stanie, zabijesz sesję i zwrócisz "prawdziwą" odpowiedź na wywołanie zwrotne js i wyłączysz program ładujący. –