以下是标记页
<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会触发回帖?
答案 0 :(得分:5)
文件上传不适用于AsyncPostBackTrigger 。它只适用于PostBackTrigger
解决方案:如果您想使用AsyncPostBackTrigger上传文件,则必须使用ajaxtoolkit。在AjaxToolkit中,他们的控件名称为&#34; AsyncFileUpload&#34;。
希望您知道如何将AjaxToolkit添加到您的工具箱中。如果你不知道,请告诉我,我会指导你。
答案 1 :(得分:2)
你还没有定义控制事件,你必须告诉触发控制事件:
<asp:AsyncPostBackTrigger ControlID="btnUpload" EventName="Click" />
<强>更新强>
你必须使用异步回发触发器:
AsyncPostBackTrigger - 使用这些触发器指定UpdatePanel内部或外部的控件,单击该控件时应触发部分页面回发。
PostBackTrigger - 使用这些触发器在UpdatePanel中拥有一个控件导致整页回发而不是部分页面回发。