强制回发 Asp.Net

2024-01-05

请看下面的点击事件...



 Protected Sub btnDownloadEmpl_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDownloadEmpl.Click
        Dim emplTable As DataTable = SiteAccess.DownloadEmployee_H()
        Dim d As String = Format(Date.Now, "d")
        Dim ad() As String = d.Split("/")
        Dim fd As String = ad(0) & ad(1)
        Dim fn As String = "E_" & fd & ".csv"
        Response.ContentType = "text/csv"
        Response.AddHeader("Content-Disposition", "attachment; filename=" & fn)
        CreateCSVFile(emplTable, Response.Output)
        Response.Flush()
        Response.End()
        lblEmpl.Visible = True
    End Sub
  

此代码只是将数据从数据表导出到 csv 文件。这里的问题是 lblEmpl.Visible=true 永远不会被命中,因为此代码不会导致回发到服务器。即使我将代码行 lblEmpl.Visible=true 放在单击事件的顶部,该行也可以正常执行,但页面永远不会更新。我怎样才能解决这个问题?


这行:

lblEmpl.Visible = True

永远不会被击中,因为这一行:

Response.End()

抛出一个ThreadAbortException

我认为处理此问题的一种更简洁的方法是创建一个简单的 HttpHandler 组件,并在弹出窗口中“打开”它。 (弹出窗口实际上不应打开。在大多数情况下,浏览器会意识到它实际上是下载,并会隐藏选项卡/窗口。)

研究IHttpHandler界面。它们实际上实现起来非常简单。

这是一个示例处理程序。抱歉,花了一段时间,我被叫去参加一个会议:

public class CensusHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string fileName = String.Format(
            CultureInfo.CurrentUICulture,
            "E_{0:00}{1:00}.csv",
            DateTime.Today.Month,
            DateTime.Today.Day
            );

        context.Response.ContentType = "text/csv";
        context.Response.AddHeader(
            "Content-Disposition", String.Format(null, "attachment; filename={0}", fileName)
            );

        //Dump the CSV content to context.Response

        context.Response.Flush();
    }

    public bool IsReusable { get { return false; } }
}

好的,尝试添加 javascript onclick 事件来触发下载:

<asp:Button ID="Clickety" runat="server" Text="Click Me!" OnClick="Clickety_Click"
    OnClientClick="window.open('Handler.ashx', 'Download');" />

常规的OnClick事件将触发您的回发代码。 javascript onclick (OnClientClick)活动将通过以下方式启动下载HttpHandler.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制回发 Asp.Net 的相关文章

随机推荐

  • 检查当前时间是否在两个时间之间,可能存在单圈天数

    我有一个接受用户提交的系统 收到提交后 系统将遍历所有时间段以找到合适的时间段 问题是 如果结束时间到了第二天 它需要能够检查开始和结束时间 举个例子 时间段从当天晚上 10 30 开始 到第二天下午 4 00 结束 如果当前时间在晚上 1
  • 将 NSMutableSet 和 NSMutableOrderedSet 桥接在一起的协议

    In Swift 3 我希望能够创建一个协议 允许我添加元素并通过使用进行迭代for element in 该协议应该适用于两者NSMutableSet and NSMutableOrderedSet 因为它们不是从同一个类继承的 我知道有
  • Dask:Dataframe groupBy 上的独特方法

    我想知道在使用 Dask 进行 groupBy 聚合后是否可以获取给定列中唯一项目的数量 我在文档中没有看到类似的内容 它可以在 pandas dataframe 上使用并且非常有用 我已经看到一些与此相关的问题 但我不确定它是否已实施 有
  • 选择 null:D3 中 selectAll(null) 背后的原因是什么?

    我见过一些 D3 代码具有这样的用于附加元素的模式 var circles svg selectAll null data data enter append circle 我真的不明白这个片段 为什么选择null 按照我对D3的理解 如果
  • 在 CSS 中并排堆叠 Div

    我不想在这里问 但经过几个小时的挫败感后 我觉得我必须这么做 我有两个 可能更多 我想要并排的 div 他们的父div有固定的宽度并且overflow hidden所以我们一次最多只能看到一个div 问题是它们不会并排堆叠 我试过了floa
  • 使用 PHP 解析错误语法错误意外的文件结尾[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是什么意
  • 带有 bool 查询的 Elasticsearch Java Jest 客户端查询构建器范围

    我需要使用 Jest 客户端进行 Elasticsearch 查询 以将一些术语和日期与范围查询相匹配 所以我需要使用 Jest 执行带有范围查询的 bool 查询QueryBuilder有这样的请求 query range gte beg
  • 空手道框架和 TestNG

    Karate 框架支持 TestNG 吗 Karate 框架是否会像使用 JUnit 一样为 TestNG 生成任何 json 文件 Karate 曾经支持 TestNG 但现已弃用 这应该不是问题 因为 a Karate 不需要任何 Te
  • 每次更改控制器后自动重新启动 Rails 服务器

    任何正常更改后都不需要重新启动 Rails 服务器 但是 当我对应用程序控制器进行少量更改时 如果我不重新启动服务器 它们就不会应用 即使我写了糟糕的代码并故意犯了错误 旧的错误仍然存 在 我怎样才能改变它或验证它是否设置良好 我有在con
  • jQuery 自动完成:确定输入的文本是否不匹配

    我已经启动了 jQuery Autocomplete UI 1 6rc2 并运行良好 当用户选择一个项目时 它会使用关联的 ID 更新隐藏的表单值 当输入的文本与自动完成列表中的结果不匹配时 如何将隐藏表单值设置为 0 在本例中 我将创建一
  • 内使用
    几次

    我对 Spring 很陌生 我正在尝试使用 Spring MVC JSP JSTL 我的目标是制作包含用户列表的 JSP 并允许单独编辑每个用户 所以我想我应该使用单独的
  • 如何使用 MongoDB 和 Node.js 更新插入多个对象?

    假设我有一系列电影类型 如下所示 id 28 name Action id 12 name Adventure id 16 name Animation id 35 name Comedy id 80 name Crime id 99 na
  • Php:如何计算两个“相似”对象数组之间的差异?

    我有一个对象数组 tab这是表的 行 即您可以通过 访问每一列 tab i gt columnname 我有另一个对象数组 tab json这是 AJAX 调用的返回 其中包含 too 表的 行 即您可以通过 访问每一列 tab json
  • 将 RMI 限制为一个端口的影响

    我希望能够将我的应用程序使用的端口限制为一些尽可能小的已知集 该应用程序使用 Java RMI 与远程服务器进行通信 注册表在标准端口 1099 上导出 然而 用于导出各种远程对象的端口似乎并不总是一致的 尽管它在短时间内在多个连接中保持不
  • 让 Ruby 程序成为守护进程?

    我想编写一个始终在我的 Mac 后台 守护进程 运行的 Ruby 程序 有人能指出我如何做到这一点的正确方向吗 Ruby 1 9 x 现在具有以下内容 Process daemon 将其放入您的代码中即可 取自 Ruby 中的守护进程 ht
  • 使用IntelliJ数据库客户端连接H2数据库

    我的 Grails 应用程序在开发模式下使用 h2 数据库 Grails 应用程序的默认行为 数据库连接设置DataSource groovy are dataSource pooled true jmxExport true driver
  • java中的静态类

    java中如何声明静态类 eclipse 希望我从声明中删除 static static public class Constants 首先回答你的问题 Only a 嵌套类可以声明为静态 顶级班级不能declared是静态的 第二 内部类
  • 数据库到 GlazedList/Jtable 然后通过 GlazedList/JTable 编辑数据库

    我可以把这个问题分解为两个问题 将数据库 MS Access 的内容放入数据库的最佳方法是什么 GlazedList http www publicobject com glazedlists JTable http java sun co
  • 为什么HashMap要求初始容量是2的幂呢?

    当我浏览Java的HashMap源代码时 我看到了以下内容 The default initial capacity MUST be a power of two static final int DEFAULT INITIAL CAPAC
  • 强制回发 Asp.Net

    请看下面的点击事件 Protected Sub btnDownloadEmpl Click ByVal sender As Object ByVal e As System EventArgs Handles btnDownloadEmpl