如何在 ASP.Net C# 中从父服务器端刷新 UserControl 或调用用户控件功能?

How to refresh UserControl or Call User control function from Parent serverside in ASP.Net C#?

我有一个带有下载文件按钮的页面,按下该按钮后,我希望刷新用户控件。这可以通过我在 UC 中编写的函数来完成。

所以: 我如何从父服务器端调用User_Control中的js函数(在用户按下下载_按钮下载文件后)

我使用了这个代码,但它不起作用?

Page.ClientScript.RegisterStartupScript(this.GetType(),"UpdateReportList", "UpdateReportList();", true);

Note: UpdateReportList() is js function in my user control .

HttpContext.Current.Response.WriteFile(sFilePath) 将附件写入整个响应 body,并且不会通过 Page.ClientScript.RegisterStartupScript() 附加其他标记或脚本。这就是您在浏览器中看不到触发 UpdateReportList() 的原因。

要更改的方法,还有几个其他选项可以实现此功能。

  1. 设置 cookie 而不是 Page.ClientScript.RegisterStartupScript(),因为它是响应 header 的一部分。使用 setInterval() 启动 javascript 计时器,请求下载,读取 cookie,停止计时器,清除 cookie 并调用 UpdateReportList()

  2. 将整个代码移动到 asp.net 通用处理程序 (.ashx) 并重复上述相同的步骤。

  3. 您可以根据自己的需要想出一些其他的方案。

我的问题基于@Sudipta Maiti 和@puddleglum 的回答 link Update page after file download 我将我的代码更改为:

在下载按钮 OnClientClick 事件中,我在返回服务器之前添加了以下行:

setTimeout(function () {
        window.location.reload(1);
    }, 3000);

所以我会有一个短暂的延迟,然后重新加载页面。