在下面的代码中,您可以在UpdatePanel中看到AjaxFileUpload控件和Label。预期的行为是更改lb_Info.Text值以显示信息,以防在上载过程中出现错误。
.aspx文件
<asp:Panel id="IP_Modal" runat="server" class="modal hide fade">
<div class="form-inline">
<asp:AjaxFileUpload ID="fup_Main" runat="server"
OnUploadComplete="UploadButton_Click"
OnClientUploadComplete="MyNamespace.UploadComplete"
OnClientUploadError="MyNamespace.UploadComplete"
MaximumNumberOfFiles="1" />
<asp:UpdatePanel ID="IP_UpdatePanel" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Label ID="lb_Info" runat="server" Text="Dummy Text"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="fup_Main" EventName="UploadComplete"/>
</Triggers>
</asp:UpdatePanel>
//Some hidden <asp:LinkButtons /> are here
</div>
</asp:Panel>
在这里,您可以看到触发事件OnUploadComplete时执行的C#函数。 .cs文件
protected void UploadButton_Click(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
try
{
string filename = Path.GetFileName(e.FileName);
if (!Directory.Exists(Server.MapPath("some_dir_path")))
Directory.CreateDirectory(Server.MapPath("some_dir_path"));
fup_Main.SaveAs(Server.MapPath("some_dir_path" + filename);
/* Some validations here */
lb_Info.Text = "Text from code-behind";
}
catch (Exception ex)
{
lb_Info.Text = Server.HtmlEncode(ex.Message);
}
}
当我运行此代码时,我可以使用AjaxFileUpload控件完美地选择并上传文件,当上传完成后,它就会完成&#34; OnUploadComplete&#34;事件火灾和&#34; UploadButton_Click&#34;函数已执行,但页面未使用新标签文本进行更新。
我认为错误可能出现在Triggers部分的EventName属性中,但是如果我使用EventName =&#34; OnUploadComplete&#34; (这是AjaxFileUpload控件中的属性名称)页面甚至不会使用消息&#34呈现;无法找到名为&#39; OnUploadComplete&#39;的事件。关联控制&#39; fup_Main&#39;对于UpdatePanel&#34;
中的触发器知道我在这里缺少什么吗? 提前感谢您的答案:)
答案 0 :(得分:0)
在UploadButton_Click方法的末尾添加此行(在try catch之后可以在finally块中):
IP_UpdatePanel.Update();
答案 1 :(得分:0)
这对我有用:请适用于您的代码:经过代码测试
<script type ="text/javascript">
function AjaxFileUpload1_UploadComplete() {
console.log('<%#myThrobber.ClientID%>');
document.getElementById('myThrobber').innerHTML = "File Uploaded Successfully";}
</script>
![enter image description here][1]<div>
<asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server"
OnClientUploadComplete="AjaxFileUpload1_UploadComplete" ThrobberID="myThrobber"
MaximumNumberOfFiles="10" Width="337px" />
<asp:Label runat="server" ID="myThrobber" ></asp:Label>
</div>
Code Behind :
protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
string filePath = @"D:\Manish\FirstProject\sampleproject\sampleproject\upload\" + e.FileName;
AjaxFileUpload1.SaveAs(filePath);
}
我不知道为什么它不能从服务器端工作:(