2014-09-10 55 views
0

我有一個頁面,其中大部分HTML由客戶端腳本(JQuery)生成。我添加了一個服務器端ASP.NET文件控件來將文件上傳到服務器。更新面板AsyncPostBack和回發觸發器

現在文件正在按鈕點擊上傳,這會導致POSTBACK,所以所有的文本框公司名稱,街道名稱,城市客戶端等都會丟失,因爲它們是由JQuery生成的。

我把上傳部分放在UpdatePanel中,並註冊了AsyncPostBack觸發器,但後來我沒有在代碼隱藏中獲取HttpContext對象。我使用PostBackTrigger將Async轉換爲完整的回發,然後事情變得和以前一樣(即沒有更新面板)。

現在我有兩個人的問題: - 如果更新面板的行爲方式與沒有更新面板的頁面相同,那麼更新面板的用法是什麼。 (PostBackTrigger) - 我應該如何處理上述問題?

CODE:

<asp:UpdatePanel ID="uploadUpdatePanel" runat="server"> 
       <ContentTemplate> 
        <input id="fileField" type="file" runat="server" multiple="multiple" /> 
        <asp:Button ID="uploadButton" runat="server" Text="Upload Documents" OnClick="uploadButton_Click" /> 
       </ContentTemplate> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="uploadButton" /> 
        <%--<asp:PostBackTrigger ControlID="uploadButton" />--%> 
       </Triggers> 
</asp:UpdatePanel> 
+0

回發後您必須重新創建控件。如果它們在後面的ASP.NET代碼中動態創建,則答案將是相同的:動態創建的控件必須在每次回發時重新創建。 – Alexander 2014-09-10 13:53:32

+0

這真的有助於在這裏看到一些代碼。 看看使用AsyncPostBackTriggers – CrazyPaste 2014-09-10 14:01:06

+0

@KidBilly請參閱上面的更新。 – FreshDev 2014-09-10 14:13:23

回答

0

基本上的FileUpload控件不在UpdatePanel的工作。我之前遇到過這個問題,據我所知,這是無法解決的。你只需要接受一個完整的PostBack並且保存用戶輸入。

+0

是的,經過大量的搜索後,我也得出了這個結論。你能提出一種從客戶端上傳文件的方法嗎?我已使用Google搜索,但無法實施任何解決方案。我現在正在使用Jquery/Javascript實現客戶端上傳。 – FreshDev 2014-09-10 15:26:04

0

我會恭敬地不同意CrazyPaste的聲明,即UploadFile控件在更新面板中不起作用。我在這個問題上花了好幾個小時,終於在asp.net論壇上找到了一個不太出名的五年前的帖子。看到

檢查您的.aspx <form>標籤如下所示:

<form id="Form1" method="post" enctype="multipart/form-data" runat="server">

如果是喜歡<form id="Form1" runat="server">一個樸實的標記,這可能是你的問題。

我在其他地方發現的大多數回覆都提到了設置更新觸發器的方法,因爲它是正確的,但如果表單標籤配置不正確,則設置觸發器將毫無用處。這個建議沒有任何地方,除了2007年的論壇頁面。它現在很好用。

我希望這有助於!