2012-04-27 76 views
1

我有一个webform应用程序。按钮点击如何启动httphandler Asp.net

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

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

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

他们只有这样才算出来的是在“上传”按钮中设置PostBackURL属性。例如

一项PostBackUrl = “.upload”

其映射到的HttpHandler的路径。我的问题是“PostBackURL”是一个重定向,它会激发httpHandler,但它会直接导致“.upload”页面(其内容为空),并且用户在其他文本框中丢失了信息。

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

+0

要么有按钮发布到隐藏的iframe的形式,要么用HTML5文件API(这对IE不起作用)设置某些东西(这对IE不起作用) – Pointy 2012-04-27 13:06:22

+0

@Pointy我使用JavaScript来让发布到一个隐藏的iframe,(添加目标= my_iframe),但在我上传文件在httphandler后,我如何重置从自己提交并重新加载页面,并保持信息在文本框中不变?为什么不写一个答案? ) – 2012-04-27 14:06:11

+0

我之前没有足够的信息来知道要写什么类型的答案,但是您在评论中刚写下的内容就足够了:-) – Pointy 2012-04-27 14:18:07

回答

0

张贴到隐藏元素,我一直遵循的一般模式是:

  1. 设置窗体的目标为指向的元素的名称。 (一般我会给出与旧习惯相同的“名称”和“ID”值;可能没有必要。)

  2. 发布表单。这将启动HTTP事务,但它不会吹走表单所在的页面。

  3. 对POST的响应应该是一个没有任何内容(或几乎没有)的页面,除了一些JavaScript。该代码可以与父页面交谈,以告知它是否存在文件上载问题(例如,您想要一个图像文件,并且发布的文件是文本),或者上传成功。无论哪种情况,父页面都可以使用错误消息或某些成功消息来更新自身。

  4. 此时,表格“target”属性可以被清除。

<form>是要贴“正常”,你可能要禁用文件<input>。 (取决于你的情况