我有一个updatepanel,我更改了内容,然后调用updatepanel.update()来异步更新页面的那一部分,但它似乎没有从代码隐藏中激活update()(即Async Post Back不会发生,也不会显示更新的内容。
以下scriptmanager位于MasterPage中:
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true" ></asp:ToolkitScriptManager>
相关网页包含以下更新面板:
<asp:UpdatePanel ID="upImageConfirm" runat="server" UpdateMode="always">
<ContentTemplate>
<div id="imageContainer">
<asp:label ID="lblCheckPackshot" runat="server" Text="None" />
<asp:button ID="btnLoadPackshot" runat="server" OnClick="uploadPackShot" Text="Upload »" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
以下代码隐藏在文件上传完成时启动并运行(检查调试此代码是否运行并确实更改了值,但更新未被触发:
protected void uploadComplete(object sender, jaxControlToolkit.AsyncFileUploadEventArgs e)
{
try
{
//upload file to web file system
if (afuStockImport.HasFile)
{
string strPath = Server.MapPath("~/graphics/holding/") + Path.GetFileName(afuStockImport.PostedFile.FileName);
Session["uploadedFileName"] = afuStockImport.PostedFile.FileName;
afuStockImport.SaveAs(strPath);
//Show on page for confirmation
lblCheckPackshot.Text = "<img src=\"/graphics/holding/" + Path.GetFileName(afuStockImport.PostedFile.FileName) + "\" />";
upImageConfirm.Update();
}
}
}
谢谢!
答案 0 :(得分:1)
这是来自ASP.NET AJAX Toolkit的AsyncFileUpload的行为。问题是AsyncFileUpload使用iframe来处理异步上传,因此引发uploadComplete事件和客户端页面的“页面”没有像往常一样链接。
解决方法是使用OnClientUploadComplete
事件使用javascript触发asyncpostback,然后更新您的updatepanel。还有很多其他方法,some are not using an update panel。
答案 1 :(得分:0)
从技术上讲,您无法进行异步文件上传。存在的实现都是变通方法...隐藏的IFrame,TextAreas ......等