3

下面是标记页面

  <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>

使用上面的代码,每当用户单击“btnUpload”时,都会有一个回发,但是有一个更新面板可以防止回发,当我将 PostBackTrigger 更改为 AsyncPostBackTrigger 时,页面没有回发但是fileUpload.HasFile 将为 false 并且无法获取文件。

上面的代码有什么问题?为什么 postBackTrigger 会触发回发?

4

2 回答 2

7

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

于 2014-06-10T07:29:31.300 回答
2

您还没有定义控制事件,您必须告诉该触发器在哪个控制事件上:

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

更新:

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

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

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

于 2014-06-10T06:59:06.977 回答