2011-01-18 3 views
3

Я немного взламываю на это какое-то время без везения.asyncfileupload показать изображение после загрузки без обновления страницы

Использование asyncfileupload для загрузки файла и отображения изображения. Если я перезагружаю/обновляю страницу, отображается прекрасная загрузка и изображение.

Но нужно знать, как я могу это сделать без перезагрузки/обновления страницы.

После чтения онлайн сообщения, я вижу рекомендацию использовать ScriptManager, но это не работает для меня:

protected void FileUploadComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
    { 

      . 
      . 
      . 
      . 

     ScriptManager.RegisterStartupScript(this, GetType(), "TestAlert", 
     "window.parent.document.getElementById('" + img_ProfilePic.ClientID + "').src='" + "http://www.site.com/default.jpg" + "');", 
     true); 

}

Спасибо, Behrouz

ответ

1

Вы можете проверьте JS в ScriptManager. Похоже, что у вас может быть дополнительный «)» в конце строки JavaScript, которая может вызвать вашу ошибку.

Если вы все еще возникают проблемы, следующая ссылка должна указывать вам в правильном направлении для использования AsyncFileUpload с UpdatePanel
http://forums.asp.net/t/1479689.aspx?PageIndex=2

5

После того, как вы потратили несколько часов, прежде чем обнаружить ошибку, упомянутую пользователем554134, я придумал следующее решение, которое использует jQuery (вместе с элементом управления asyncfileupload).

  • Сначала получить скомпилированную версию AjaxToolkit, который имеет ошибку фиксированный за ссылку user554134 в.

  • Добавить jQuery, чтобы скрыть/показать изображение.

$(document).ready(function() { 
      $("#imgConfirmation").hide(); 
     }); 

Ключевой момент, чтобы помнить о том, что управление AsyncFileUpload использует IFRAME, поэтому вам нужно иметь доступ Jquery родителя фрейма при вызове вашей функции «шоу». Например:

 function showImage(imagePath) { 
      $('#imgConfirmation', window.parent.document).attr("src", imagePath); 
      $('#imgConfirmation', window.parent.document).show(); 
     } 
  • В вашем случае UploadedComplete, после сохранения файла, зарегистрировать скрипт клиента для зацепить в функцию JS.Например,
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "showImage", "showImage('" + myLink + "');", true); 
+0

Спасибо! Я уже нашел ошибку, о которой уже упоминалось, но я все еще не мог заставить свою div/панель показать/скрыть то, что я хотел. Это сделал трюк. Жаль, что я не нашел это два дня назад! – bdwakefield

1

Проверить эту ссылку, я думаю, так это использовать полный вам

http://www.aspsnippets.com/Articles/Display-image-after-upload-without-page-refresh-or-postback-using-ASP.Net-AsyncFileUpload-Control.aspx

+0

Только ссылка - не лучший способ ответить. Что делать, если в будущем ссылка будет обновлена, отредактирована/удалена, тогда ваш ответ автоматически станет недействительным. Хороший способ - вы должны немного объяснить ответ, а затем передать ссылку. – Sankumarsingh

0

Код Использована

Загрузить и Показать код

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 

{ 

string strPath = MapPath("~/upload/") + Path.GetFileName(e.FileName); 

AsyncFileUpload1.SaveAs(strPath); 

displayImage.ImageUrl = strPath; 

} 

Необходимо добавить следующие на стороне клиента JavaScript.

<script type="text/javascript"> 
 

 
function uploadComplete(sender, args) { 
 

 
var imageName = args.get_fileName(); 
 

 
$get("displayImage").src = "./upload/" + imageName; 
 

 
} 
 

 
</script>

управления для использования AsyncFileUpload:

деталь: https://code.msdn.microsoft.com/How-to-upload-an-image-and-c3703a2c

Смежные вопросы