【问题标题】:Display busy indicator while controller action work控制器动作工作时显示忙碌指示符
【发布时间】:2021-06-18 07:06:19
【问题描述】:

我现在有一个问题,希望你能帮助我。

我的问题是我有一个控制器,我在其中生成一个文件作为 byteArray(不将其保存在硬盘上),然后我返回下载。 这些操作最多需要 5-6 秒才能生成。现在我想为用户显示一个繁忙的指示器,但我不知道,当我的控制器完成时,我该如何识别!?

这是我的代码:

这是在“View.cshtml”中调用我的控制器操作的代码:

<a href="@Url.Action("DownloadAnalysis", "Analysis")" title="Get analysis file"><span class="fa fa-bar-chart"></span></a>

这是我的控制器代码:

public ActionResult DownloadAnalysis()
{
        var response = StartAnalysis();

        if (response.AnalysisByteArray != null && response.AnalysisByteArray.Length > 0)
        {
            var cd = new System.Net.Mime.ContentDisposition
            {
                FileName = response.FileName,
                Inline = false,
            };
            Response.AppendHeader("Content-Disposition", cd.ToString());
            return File(response.AnalysisByteArray , "text/csv");
        }

        return null;
}

提前感谢您的帮助!

最好的问候

【问题讨论】:

    标签: c# asp.net-mvc download


    【解决方案1】:

    使用按钮和 onclick 事件来调用控制器,而不是锚标记。 你的 html 应该是这样的

    <button title="Get analysis file" onclick="getFile()"><span class="fa fa-bar-chart"></span></button>
    

    在 JavaScript 中使用 window.location 来调用控制器动作

    <script>
        function getFile(){
             //here you can add script to change cursor to progress of add some html element to show loading.
             window.location.href = '/Analysis/DownloadAnalysis/';
        }
    </script>
    

    【讨论】:

    • 好的,谢谢您的回答!在“getFile”-Function 中,我可以设置例如忙碌指示符,但我怎么知道操作何时完成,我可以隐藏忙碌指示符?
    • 我不确定文件类型如果文件将在浏览器中打开,那么您当前的 html 页面将自动隐藏。
    • 我不确定文件类型如果文件将在浏览器中打开,那么您当前的 html 页面将自动隐藏。
    猜你喜欢
    • 2012-07-28
    • 1970-01-01
    • 2017-05-25
    • 2014-10-04
    • 1970-01-01
    • 2015-08-04
    • 2018-11-04
    • 2013-05-09
    • 2011-05-20
    相关资源
    最近更新 更多