【问题标题】:How to clear a WebForms page after a button event?如何在按钮事件后清除 WebForms 页面?
【发布时间】:2019-11-29 11:52:35
【问题描述】:

我有一个名为导出的按钮,单击该按钮会在多个文件夹中创建一个 zip 文件,所以那里没有问题。

问题是我希望,在单击事件发生后,我希望我的(aspx)页面清除,并且屏幕上的按钮也被禁用,并且出现一条消息,表明导出成功。

但只创建了 zip 文件。谁能帮我解决这个问题。

这是我的代码:

protected void btnExport1_Click(object sender, EventArgs e)
{
    try
    {
        DateTime myDateTime = DateTime.Now.ToUniversalTime();
        string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd");           

        string directoryPath = @ConfigurationManager.AppSettings["UsageExportPath"] + "UsageExport_" + sqlFormattedDate;  // Set Directory Path
        string zipFileName = "UsageExport_" + sqlFormattedDate + ".zip"; // Set Zip File Name

        createDirectory(directoryPath);
        CreateZip(@ConfigurationManager.AppSettings["UsageExportPath"] + zipFileName, 
        directoryPath);               

        RemoveDirectory(directoryPath); // Delete Directory.                     

        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition",
        "attachment;filename=" + zipFileName);
        Response.Charset = "";
        Response.ContentType = "application/zip";

        lblResult.ForeColor = System.Drawing.Color.Green;
        lblResult.Text = "Usage Exported SuccessFully";
        exportResultPanel.Visible = true;
        usagePanel.Visible = false;       

        Response.WriteFile(@ConfigurationManager.AppSettings["UsageExportPath"] + zipFileName);

        Response.End();
        //Response.Redirect("Receipt.aspx", false);
    }

【问题讨论】:

  • 我怀疑响应标头被发送回浏览器使其认为返回的唯一内容是 zip 文件,并且响应中不包含任何页面更改。我会让 zip 文件下载方法只这样做,用 zip 文件响应。收到该 zip 文件后,网页应自行更新(可能使用 javascript)以更改 UI。
  • 是的,如果我删除该邮政编码它可以工作,但我想要这两样东西
  • 重点是您不能返回文件在单个响应中更新 UI。您可以按照以下步骤操作: 1) 创建文件并将其保存在服务器上的临时位置。 2) 以成功/失败响应响应网站,并包含指向临时服务器位置的 URI。 3)使用该位置作为参数发出下载请求(就像您当前拥有的那样),提供文件并在提供文件时删除服务器上的文件。或者,您可以像我之前所说的那样,通过 javascript 更新您的 UI,并且只提供下载。
  • @DanRayson 是的,你可以。请阅读stackoverflow.com/questions/58948957/…
  • @dpant 这个答案是一种非常糟糕的迂回方式,在提供下载响应时包含带有额外数据的响应......虽然您可以在响应中包含带有额外数据的 cookie,这是可取的吗?我觉得很乱。我想我坚持我最初的回答,但我可能会将措辞改为“......你不应该返回两个文件......”最后,它仍然将更新 UI 的 javascript。

标签: asp.net webforms


【解决方案1】:

在最后添加下面一行

btnExport1.Enabled = false;

并在aspx页面上添加一个id可能是label1的服务器端标签,然后在我的第一行下面添加这一行:

label1.Text = "Export successful";

【讨论】:

  • lblResult.Text = "Usage Exported SuccessFully";
【解决方案2】:

您可以将 cookie 与 zip 文件一起发送给客户端,让他知道何时更新 UI。

详情请阅读my answerthis question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2011-01-11
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多