C# 使用ASP.NET函数进行响应处理

C# 使用ASP.NET函数进行响应处理,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我在c#代码中有一个函数,点击按钮就会触发。这应该将span更改为“DONE”,然后如果选中ZipFile复选框,则向用户发送一个zip文件 Process.Text = "DONE"; if (ZipFile.Checked) { Response.AppendHeader("content-disposition", "attachment; filename=" + folderName); Response.ContentType

我在c#代码中有一个函数,点击按钮就会触发。这应该将span更改为“DONE”,然后如果选中ZipFile复选框,则向用户发送一个zip文件

    Process.Text = "DONE";
    if (ZipFile.Checked)
    {
        Response.AppendHeader("content-disposition", "attachment; filename=" + folderName);
        Response.ContentType = "application/zip";
        using (ZipFile zip = new ZipFile())
        {
            zip.AddDirectory(Server.MapPath("PDFs")+"/"+folderName);
            zip.Save(Response.OutputStream);
        }
        Response.End();
    }

如果未选中该复选框,则显示“完成”。如果选中ZipFile复选框,它将发送zip文件,但不再更改进程。text=DONE。响应似乎覆盖了ASP.NET函数返回。但由于这是我第一次使用Response,我显然做错了什么。

除了在服务器端设置文本外,还要在客户端设置文本。请尝试以下代码段:

<script>
    function btnProcessClicked() {
        $('#<%= Process.ClientID %>').text("DONE");
        return true;
    }
</script>

函数btnProcessClicked(){
$('#')。文本(“完成”);
返回true;
}

但是,在这种方法中,请记住,如果您没有在服务器端设置文本,那么在场景(!ZipFile.Checked)中,跨度将恢复到回发后的最后一个服务器值。

我猜这是
响应。End
这是您的问题。@RickS不是。之后我又加了一句,想看看这是否有帮助。与论坛网站不同,我们不使用“谢谢”或“感谢任何帮助”或签名。看见“我不认为一个回答就能做到。据我所知,响应可以是页面,也可以是zip文件。每个请求只能提供一个响应。你需要一些客户端脚本来实现这一点。整个问题是,当按下按钮时,我不能让它说是正确的。“完成”消息的全部要点是,它可能在30多秒钟内不会显示,也就是说,每当服务器代码完成时。我的代码从一个大的文本区域读取,并生成PDF。这可能需要一段时间。完成此长服务器端进程之前,不应显示“完成”消息。(我假设您发布的代码是使用JS在HTML/客户端上发布的)。