ASP.Net 文件上传导致使用触发器在更新面板中回发
Posted
技术标签:
【中文标题】ASP.Net 文件上传导致使用触发器在更新面板中回发【英文标题】:ASP.Net file upload causing post back in update panel using triggers 【发布时间】:2013-08-10 03:20:45 【问题描述】:我有文件上传控制,可以使用更新面板上传个人资料图片。我已将 AsyncPostBackTrigger 与更新面板一起使用,但该页面仍然导致完全回发。
下面是我的内联代码。
<asp:UpdatePanel ID="pnlZerkerBasicProfile" runat="server">
<input type="file" id="myFile" name="myFile" class="file_input_hidden" onchange="javascript:FileUploadSubmit();" style="cursor: pointer;" />
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveProfilePicture" />
</Triggers>
谁能帮忙?
【问题讨论】:
【参考方案1】:将触发器更改为回发触发器,因为当通过更新面板发生异步回发时,Request.Form.AllKeys 中不提供文件上传。看到这个:
http://www.codeproject.com/Articles/16945/Simple-AJAX-File-Upload
【讨论】:
感谢您的回答,但我不想发回该页面。有什么选择吗?【参考方案2】:这应该可以工作
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="conditional">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server"Text="Upload" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
【讨论】:
【参考方案3】:这段代码应该可以工作。它不会导致回发。
<asp:UpdatePanel ID="pnlZerkerBasicProfile" runat="server">
<ContentTemplate>
<input type="file" id="myFile" name="myFile" class="file_input_hidden"
onchange="javascript:FileUploadSubmit();" style="cursor: pointer;" />
<asp:Button ID="btnSaveProfilePicture" runat="server"Text="Upload"
OnClick="btnSaveProfilePicture_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnSaveProfilePicture" />
</Triggers>
</asp:UpdatePanel>
【讨论】:
以上是关于ASP.Net 文件上传导致使用触发器在更新面板中回发的主要内容,如果未能解决你的问题,请参考以下文章