我经常看到这个问题,并且我已经做了大量的实验,试图让它发挥作用。然而,到目前为止,其他人的例子和答案都让我失望了。我很困惑。情况如下:
上传确实按预期保存了文件。我的问题是在发生这种情况后让页面更新。正在上传的文件是图片,我希望该图片能够更新。如果您重复使用文件名,我知道在客户端上没有更新图像的一些问题,但我也将它打印到标签上以确保。我确定我定位的UpdatePanel没有更新。
我尝试了以下方法:
通常当我遇到这种错误时,所有教程看起来都是错误的,事实证明我的错误是因为我没有在控件的某个地方设置ID而且它在某种程度上很重要。在这种情况下我甚至看不到。这是一些代码。
<fieldset class="pj_Pics">
<ul>
<li>
<label>Picture 1</label>
<asp:UpdatePanel ID="ajax_Pic1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Image ID="img_Pic1" runat="server" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
<div style="position:relative;">
<div class="photoChooser">
<ajaxToolkit:AsyncFileUpload ID="fu_Pic1" runat="server" CssClass="pj_PicChoose" Width="84px" OnClientUploadComplete="picPost1" OnUploadedComplete="fu_PictureFile_UploadedComplete" ThrobberID="throb1" />
<span><asp:Literal runat="server" Text="click to change"></asp:Literal></span>
<asp:Image ID="throb1" runat="server" ImageUrl="~/images/throbber.gif" AlternateText="uploading image" />
</div>
</div>
</li>
</ul>
</fieldset>
protected void fu_PictureFile_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
bla bla bla;
// and update the image
img.ImageUrl = "~/" + webfolder + imageFileName;
thing.Text = img.ImageUrl;
}
function picPost1(sender, args) {
document.getElementById('<%# Button1.ClientID %>').click();
}
任何帮助非常感谢。页面上显然有一个ScriptManager,我展示的代码就是我尝试过的最后一件事。如果您还需要查看其他内容,请与我们联系。
谢谢!
答案 0 :(得分:0)
我今天碰巧遇到了同样的情况,这就是我解决它的方法。
根据这个LINK,自从异步FileUpload以来,没有发生Postback,甚至没有ViewState。
所以在OnUploadedComplete中我在代码隐藏中执行SaveAs()之前测试文件类型和大小,然后我在OnClientUploadComplete中测试它以显示消息并继续进行其余工作,如设置Images URL。希望这会有所帮助。