2012-04-27 65 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>。 (取決於你的情況