Подтвердить что ты не робот

FileUpload контролировать внутри UpdatePanel без обновления всей страницы?

В соответствии с Microsoft элемент управления FileUpload несовместим с AJAX UpdatePanel.

Я знаю, что PostBackTrigger можно добавить в кнопку отправки формы следующим образом:

<Triggers>
  <asp:PostBackTrigger ControlID="Button1" />
</Triggers>

Проблема заключается в том, что это заставляет форму выполнять полный пост-обратно, который в первую очередь устраняет всю проблему использования UpdatePanel. Есть ли обходной путь для этой проблемы, который не вызывает обновление всей страницы?

4b9b3361

Ответ 1

Я знаю сторонний компонент, который может это сделать. Он называется "swfupload" и может свободно использовать и открывать исходники и использовать javascript и flash для совершения магии.

вот список предлагаемых функций: (со своего сайта)

  • Загрузите несколько файлов одновременно с помощью ctrl/shift-select в диалоговом окне
  • Обратные вызовы Javascript для всех событий
  • Получить информацию о файлах перед загрузкой
  • Элементы загрузки стиля с помощью XHTML и css
  • Отображать информацию во время загрузки файлов с помощью HTML
  • Не требуется перезагрузка страницы
  • Работает на всех платформах/браузерах с поддержкой Flash.
  • Грамотно деформируется в стандартную форму HTML-загрузки, если Flash или javascript недоступен
  • Управление файлами перед запуском загрузки
  • Отображать только выбранные типы файлов в диалоговом окне
  • Очередь загружает, удаляет/добавляет файлы перед началом загрузки.

У них также есть демонстрационная область где вы можете играть с их контролем. Таким образом, вы можете убедиться, что это именно то, что вы хотите.

Мы использовали его в одном из наших проектов, и он до сих пор не подвел нас, поэтому я думаю, что это безопасная ставка.

oh и вот страница загрузки: http://code.google.com/p/swfupload/

Ответ 2

Вы не можете загружать файлы (файлы) через AJAX только путем перезагрузки целого документа HTML. Вы должны либо использовать iframe, если предпочитаете чистый HTML (это более распространено, например, используется WordPress), или что-то еще, например swfupload, предложенное Sven.

Ответ 3

Добавьте это в свой кнопочный элемент управления:

OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"

-or-

Сделайте свой тег формы страницы похожим:

<form id="form1" runat="server" enctype="multipart/form-data">

Ответ 4

Я нашел это на днях, когда столкнулся с той же проблемой: http://vinayakshrestha.wordpress.com/2007/03/13/uploading-files-using-aspnet-ajax-extensions/.

Для моей реализации я помещаю iframe в модальное всплывающее окно и добавил кнопку со стилем = "display: none", чтобы обрабатывать закрытие всплывающего окна. В функции javascript, которая следит за изменением в iframe, я добавил document.getElementById( "<% = btnCloseUpload.ClientID% > " ). Click(); для скрытой кнопки.

Ответ 7

Кнопка, запускающая событие загрузки, должна иметь свойство UseSubmitBehavior, установленное на false:

clsUploadButton.UseSubmitBehavior = False;