Ich arbeite in ASP.NET MVC-Anwendung (Rasierer), die Kendo UI verwendet. Ich sollte einen Bericht anzeigen, wenn der Kunde auf die Schaltfläche klickt. Aber der Bericht ist nicht so schnell, und ich sollte eine Meldung im Popup-Fenster für den Client anzeigen, etwa so: "Bericht wird erstellt - in einem Moment wird ein neues Fenster mit Ergebnissen angezeigt". Wie zeige ich das Popup-Fenster mit der Nachricht an? Und wo im Code? Bitte sehen Sie den Code, den ich verwende. Die Taste ist:Popup-Fenster mit Nachricht in ASP.NET MVC-Anwendung
<a class="k-button k-button-icontext k-grid-Patient" id="hrefAllCheckedPatientsRep" style="display:none;" href="#" onclick="getAllChecked();">Generate Report</a>
Diese Funktion ist getAllChecked() in JavaScript:
function getAllChecked() {
$('#checkedMsgRep').text('');
$.ajax({
type: "POST",
url: "/PatientReport/ExportToPDF",
dataType: "json",
traditional: true,
data: { uniqueIds: checkedArray },
success: function (data) {
if (data.success) {
// $('#lnkPdfDownload').show();
//$('#lnkPdfDownload').attr('href', '/PatientReport/DownloadFile' + '?fName=' + data.fName);
$('#myFrame').attr('src', '/PatientReport/DownloadFile' + '?fName=' + data.fName);
} else {
//$('#lnkPdfDownload').hide();
}
},
error: function (jqXHR, textStatus, errorThrown) {
$('#checkedMsgRep').text('@ELSORegistry.Resources.Views.Patient.PatientStrings.CheckedError').show();
$('#hrefCheckedPatientsRep').blur();
}
});
}
im Controller Ich habe eine Aktion:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ExportToPDF(List<String> uniqueIds) {
// step 1: creation of a document-object
var document = new Document(PageSize.A4.Rotate(), 3, 3, 80, 50);
//Here is the code for export to pdf
// Add table to the document
document.Add(dataTable);
//This is important don't forget to close the document
document.Close();
byte[] byteInfo = output.ToArray();
output.Write(byteInfo, 0, byteInfo.Length);
output.Position = 0;
var fName = string.Format("File-{0}.pdf", DateTime.Now.ToString("s"));
Session[fName] = output;
return Json(new { success = true, fName }, JsonRequestBehavior.AllowGet);
}
usw.
Die andere Aktion in Contoller ist:
public ActionResult DownloadFile(string fName)
{
var ms = Session[fName] as MemoryStream;
if (ms == null)
return new EmptyResult();
Session[fName] = null;
return File(ms, "application/pdf", fName);
}
Vorschlag: Anstatt Popup zu verwenden, verwenden Sie ein Lade-GIF-Bild, das Sie einfach ein- und ausblenden können. Sie können das Bild beim Generieren der Schaltfläche "Bericht erstellen" anzeigen und im einfachen Ajax-Erfolg ausblenden, indem Sie jQuery verwenden. –
Danke, es funktioniert gut :) – alenan2013