asp.net updatePanel PostBackTrigger触发完整回发

时间:2014-06-10 06:57:54

标签: c# asp.net file-upload asynchronous-postback

以下是标记页

  <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
                    <table>
                        <tr>
                            <td>
                                <label>File name<label>
                            </td>
                        </tr>
                       <tr>
                            <td>
  <asp:TextBox runat="server" ID="txtName" Width="150%"></asp:TextBox>
                            </td>
                        </tr>
                      <tr>
                            <td>
                                <label>File</label>
                            </td>
                            <td>
                                <asp:FileUpload runat="server" ID="fileUpload" />
                            </td>
                        </tr>
                    </table>
                    <asp:Button runat="server" ID="btnUpload" Text="Upload file"  OnClick="btnUpload_Click" />
                </div>

                <div class="panel-heading">File display</div>
                <div class="panel-body">
     <asp:GridView runat="server">
       </asp:GridView>
                    <asp:Button runat="server" ID="btnRefresh" Text="Refresh" OnClick="btnRefresh_Click" />
                </div>
            </div>
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnUpload" />
        </Triggers>
    </asp:UpdatePanel>

使用上面的代码,每当用户点击&#34; btnUpload&#34;时,都会有回发帖,但是当我将PostBackTrigger更改为AsyncPostBackTrigger时,会有一个更新面板来阻止回发,该页面没有回发,但fileUpload.HasFile将为false,无法获取该文件。

上述代码有什么问题?为什么postBackTrigger会触发回帖?

2 个答案:

答案 0 :(得分:5)

文件上传不适用于AsyncPostBackTrigger 。它只适用于PostBackTrigger 解决方案:如果您想使用AsyncPostBackTrigger上传文件,则必须使用ajaxtoolkit。在AjaxToolkit中,他们的控件名称为&#34; AsyncFileUpload&#34;。
希望您知道如何将AjaxToolkit添加到您的工具箱中。如果你不知道,请告诉我,我会指导你。

答案 1 :(得分:2)

你还没有定义控制事件,你必须告诉触发控制事件:

<asp:AsyncPostBackTrigger ControlID="btnUpload" EventName="Click" />

<强>更新

你必须使用异步回发触发器:

  

AsyncPostBackTrigger - 使用这些触发器指定UpdatePanel内部或外部的控件,单击该控件时应触发部分页面回发。

     

PostBackTrigger - 使用这些触发器在UpdatePanel中拥有一个控件导致整页回发而不是部分页面回发。