如果未在MVC中创建文件,如何显示警报,弹出窗口或消息?

时间:2016-09-12 06:15:10

标签: c# asp.net-mvc

我有一个行动方法:

public ActionResult Export(int? protocol, int? visitno)
{
    SetViewBagItems();
    if(protocl.hasValue)
    {
        // code create file
        if (!string.IsNullOrEmpty(csvData))
        {
            return File(new System.Text.UTF8Encoding().GetBytes(csvData), "text/csv", "Report.csv");
        }
        else
        {
            // need to show something in ui like, not able to create file, or any popup or any alert.... 
        }
    }
    return view();
}

因此,在提到的代码中,我需要在创建文件时显示类似警报或消息的内容。

现在的行为是:

  • 如果创建了文件,它将直接下载并且不会重新加载页面。
  • 如果没有创建文件,则整个页面将刷新。

我需要显示一些消息而不是那个消息。

第一次加载页面使用相同的控制器方法。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

使用$ .ajax()在控制器中调用该函数。喜欢:

    $.ajax({
        url: "/controller/action",
        type: "GET",
        data: {protocol: protocol, visitno: visitno},
        success: function(e) {
             if(e != null)
             {
                  //Alert
             }
             else {
                  //Alert
             }
        }
   })

答案 1 :(得分:0)

您可以从操作方法返回JSON结果:

return Json(new { 
                  success = true, 
                  status = "Failure" 
                }, JsonRequestBehavior.AllowGet);

调用action方法的ajax方法,检查返回状态并在对话框中或通过警报显示错误或成功消息:

$.ajax({
     type: "POST",
     url: "/Controller/Action",
     data: { "ID": $('#id').val() },
     success: function (data) {
     if (data.status == "Failure")
      {
          $('#dialog-Add-Success').dialog({
          modal: true,
          opacity: 1,
          buttons: {
           Ok: function () {
                            $(this).dialog('close');
                           }
            },
         })
       }