我有一个问题非常类似于this question。我的页面上有一个下拉菜单,会导致回发,在此期间,ASP:Image
的ImageUrl
属性发生更改。当回发发生时,FileUpload中的任何值都将被清除。这是我想解决的问题,但我在这个过程中遇到了这个问题。UpdatePanel异步回发没有更新内容
我试图通过将下拉和图像包装在UpdatePanel
中来解决问题。这里是我的ASP标记:
<asp:UpdatePanel ID="upPanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="myDropdown"
EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<tr valign="top">
<td>Tag:</td>
<td>
<asp:DropDownList ID="myDropdown" runat="server"
AppendDataBoundItems="true" DataTextField="Name"
DataValueField="ID" AutoPostBack="true">
<asp:ListItem Value="" />
</asp:DropDownList>
</td>
</tr>
<TR vAlign="top">
<TD width="150">Thumbnail:</TD>
<TD>
<asp:Image id="imgThumbnail" Runat="server"
AlternateText="No Image Found"
Visible="false"></asp:Image><BR>
</TD>
</TR>
</ContentTemplate>
</asp:UpdatePanel>
编辑:我的代码,这样做背后的更新是在这里:
Private Sub myDropdown_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles myDropdown.SelectedIndexChanged
If (myDropdown.SelectedValue <> "-1") Then
imgThumbnail.ImageUrl = Application("AppPath") + "/Modules/Broadcaster/ImageGen.ashx?tag=" + myDropdown.SelectedValue
Else
imgThumbnail.ImageUrl = Application("AppPath") + "/Modules/Broadcaster/ImageGen.ashx?defaultTag=" + _modID.ToString()
End If
End Sub
我可以看到异步回发在Firebug发生,但图像的URL不会改变。我究竟做错了什么?
我编辑了问题以添加VB代码隐藏。在添加更新面板之前,这工作正常。它在我添加UpdatePanel之前工作正常;你是否说下拉菜单在异步回发上没有正确填充?无论哪种方式,我解决了这个问题,通过使用jQuery来更改ddl的change()事件的图像路径,所以这个问题更多的是关于好奇心的问题。 – 2011-05-25 22:19:16
正确。在调用page_load函数之前,异步回发似乎不会填充DDL(因为每次加载页面时都会调用它,而不管回发的类型如何)。 jQuery始终是一个选项;但是,我通常会尽可能将代码保留在代码隐藏中,这就是为什么当我遇到这些问题时想出解决方案的原因。 – akuta 2011-05-25 22:37:05