Если ваш код запускается после асинхронной обратной передачи (согласно вашему UpdatePanel
), то изменения, отличные от UpdatePanel
, не будут отображаться.Контент на главной странице определенно может подходить.
Если это то, что вы пытаетесь сделать, эта модель на самом деле не будет работать.При работе с этой моделью вам потребуется использовать некоторый клиентский скрипт для внесения изменений в уже отрендеренное содержимое.
UpdatePanel
- это конструкция для идентификации области, которая обновляется с помощью ajax.Страница фактически не перезагружается.Таким образом, обратная передача никогда не сможет изменить содержимое, находящееся за пределами UpdatePanel
(или элемента управления, привязанного к этой панели), которое его получило.
Вот базовая реализация (с использованием jQuery).Добавьте скрытое поле для передачи нового источника клиенту.Это должно быть внутри UpdatePanel
.Измените это значение с сервера, если вы хотите, чтобы изображение обновлялось с помощью new_image_src.Value=ResolveUrl(...);
<asp:HiddenField ClientIdMode="Static" runat="server" id="new_image_src"
value="" EnableViewState="false">
Присвойте статическому идентификатору свое изображение, чтобы упростить жизнь:
<asp:Image ClientIdMode="Static" runat="server" id="dynamic_image" ImageUrl="..." >
Добавьте JavaScript кстраница (НЕ ДОЛЖНА быть в UpdatePanel):
function updateImage() {
var new_src=$('#new_image_src');
if (new_src) {
$('#dynamic_image').attr('src',new_src);
/// erase it - so it won't try to update on subsequent refreshes
new_src.val('');
}
}
$(document).ready(function() {
/// adds an event handler after page is refreshed from asp.net
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(updateImage);
});
Это не составит труда сделать и без jquery, но кажется более распространенным, чем не в наши дни.