2008-08-30 3 views
17

В соответствии с Microsoft элемент управления FileUpload несовместим с AJAX UpdatePanel.FileUpload control внутри UpdatePanel без обновления всей страницы?

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

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

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

ответ

8

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

вот список возможностей, которые они предлагают: (с их сайта)

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

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

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

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

3

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

1

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

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

3

Добавьте это в кнопки управления:

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

-или-

Сделайте свою страницу Форма тег выглядит следующим образом:

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

Я пробовал это - мой элемент управления FileUpload по-прежнему возвращает False для свойства .HasFile. – 2010-05-04 19:37:22

1

Попробуйте AJAX AsyncFileUpload. Он хорошо работает, если используется в том материале, который предполагается использовать (обрабатывать событие UploadedComplete).

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

+0

Я не знаю, является ли это конкретным случаем или нет, но это также возвращает false для .HasFile для меня, когда он находится внутри панели обновления. Моя работа - использовать тэг триггеров, чтобы исключить его как главный вопрос, но все же использовать элемент управления AsyncFileUpload (который, вероятно, удаляет асинхронный характер). Это с веб-сайтом mojoPortal. – TamusJRoyce 2012-03-20 13:18:08

-1

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

clsUploadButton.UseSubmitBehavior = False; 
Смежные вопросы