弹出窗口,在ASP.NET MVC应用程序中显示消息

时间:2016-06-27 21:19:42

标签: javascript c# asp.net asp.net-mvc

我在使用Kendo UI的ASP.NET MVC应用程序(razor)中工作。我应该在客户点击按钮时显示报告。但是,报告不是那么快,我应该在客户端的弹出窗口中显示一条消息,如下所示:'生成报告 - 片刻之后会出现一个带有结果的新窗口' 。如何使用消息显示弹出窗口?在代码中的哪个位置?请参阅我使用的代码。按钮是:

<a class="k-button k-button-icontext k-grid-Patient" id="hrefAllCheckedPatientsRep" style="display:none;" href="#" onclick="getAllChecked();">Generate Report</a>&nbsp;

这是JavaScript中的函数getAllChecked():

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();
            }
        });
        }

在Controller中我有一个动作:

    [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);

    }

控制器中的其他操作是:

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);
        }

1 个答案:

答案 0 :(得分:1)

使用此代码创建带消息的div。

<div id="effect" class="ui-widget-content ui-corner-all">    
<p>Loading Files...</p>
</div>

使用show function在javascript函数中显示弹出窗口。

function getAllChecked() {$( "#effect" ).show( selectedEffect, options, 500, callback );}

在ajax内部成功隐藏弹出窗口。

success: function (data) {
            if (data.success) {$( "#effect:visible" ).removeAttr( "style" ).fadeOut();}

希望这会有所帮助。