文件上传不';在UpdatePanel中嵌套时无法工作?C#
按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript如下:文件上传不';在UpdatePanel中嵌套时无法工作?C#,c#,asp.net,ajax,file-upload,updatepanel,C#,Asp.net,Ajax,File Upload,Updatepanel,按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript如下: <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
功能点击按钮(){
document.getElementById(“”)。单击();
}
问题很简单。FileUpload1.HasFile==false。我不知道为什么会这样,但当我把它放在“更新”面板中时,它就停止工作了。
我在这上面看到了一些其他的线索。但他们都没有回答为什么会发生这种情况,他们只是指向你可以下载的东西
EDIT:我想这样做的主要原因是为了得到一个..上传文件。。标记,以便在客户端上载到服务器时弹出,并在完成后在数据列表中显示。我只是无法让UpdateProgress正常工作。出于安全考虑,浏览器不允许您通过javascript发布文件。想象一下,如果我可以编写一点javascript,将MyDocuments文件夹的内容异步提交到我的服务器 因此,发布表单的javascript方法,如UpdatePanel使用的XMLHttpRequest,将无法工作 如果您使用3.5SP1,这篇文章将介绍一个不错的解决方案
如果您不想使用AjaxControlToolkit,本文将介绍一些解决方法 基本上,您只需让按钮执行完整的回发即可发送文件。另外,请确保您有以下信息:Form.Enctype=“多部分/表单数据”;在代码中设置,也可以在该页面中设置。如前所述,出于安全原因,如果没有黑客攻击,AsyncPostback无法处理文件。(我从来没能让它工作过)
文件上载无法与部分回发一起使用。 因此,只需在页面加载时添加这一行即可
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
或者使用PostBackTrigger
ScriptManager.GetCurrent(this).RegisterPostBackControl(this.YourControlID);
.更新进度不适用于完整的回发,对吗?正确,您将无法监控进度,除非您的浏览器在回发过程中显示加载栏,这似乎不是所有浏览器上的可靠方式。这很旧,现在我们可以通过js回发,但如何?
ScriptManager.GetCurrent(this).RegisterPostBackControl(this.YourControlID);
<Triggers>
<asp:PostBackTrigger ControlID="YourControlID" />
</Triggers>
<ajaxToolkit:AsyncFileUpload OnClientUploadError="uploadError"
OnClientUploadComplete="uploadComplete" runat="server"
ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern"
UploadingBackColor="#CCFFFF" ThrobberID="myThrobber" />