【问题标题】:How does Button Click fire httphandler Asp.netButton Click 如何触发 httphandler Asp.net
【发布时间】:2012-04-27 12:59:01
【问题描述】:

我有一个网络表单应用程序。

该页面有一个 from 其中包含一组文本框和一个 ASP:FileUploader

一个名为“上传”的按钮将上传文件与保存整个表单分开。

我设置了一个httpHandler来分块上传文件,用户点击“上传”后应该会触发它。

我想出的唯一方法是在“上传”按钮中设置PostBackURL 属性。例如

PostBackURL = ".upload"

映射到 httpHandler 的路径。

但我的问题是“PostBackURL”是一个重定向,它确实会触发 httpHandler,但它会指向“.upload”页面(其内容为空),并且用户在其他文本框中丢失了信息。

那么触发 httpHandler 并让浏览器停留在当前页面的最佳方法是什么? iframe 是唯一的选择吗?

【问题讨论】:

  • 要么让按钮将表单发布到隐藏的 iframe,要么使用 HTML5 文件 API 进行设置(不适用于 IE)。
  • @Pointy 我使用 JavaScript 让 from 发布到隐藏的 iframe,(添加 target=my_iframe),但是在 httphandler 中上传文件后,如何重置 from 以自行提交和重新加载页面并保持文本框中的信息不变?为什么不写答案? :)
  • 我之前没有足够的信息知道该写什么样的答案,但是你在评论中写的就足够了:-)

标签: javascript asp.net ajax vb.net httphandler


【解决方案1】:

要发布到隐藏的 <iframe> 元素,我一直遵循的一般模式是:

  1. 将表单的目标设置为指向<iframe> 元素的名称。 (通常我给<iframe> 赋予相同的“name”和“id”值是出于旧习惯;可能没有必要。)

  2. 张贴表格。这将启动 HTTP 事务,但不会破坏表单所在的页面。

  3. 对 POST 的 响应 应该是一个除了一些 JavaScript 之外没有任何内容(或几乎没有任何内容)的页面。该代码可以与父页面对话,告诉它文件上传有问题(例如,您想要一个图像文件,并且发布的文件是文本)或上传成功。在任何一种情况下,父页面都可以使用错误消息或成功消息进行自我更新。

  4. 此时可以清除表单的“target”属性。

<form> 要“正常”发布时,您可能需要禁用文件<input>。 (取决于你的情况。

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2013-04-25
    相关资源
    最近更新 更多