FileUpload.PostedFile всегда null внутри UpdatePanel
У меня есть элемент управления FileUpload внутри UpdatePanel. Я успешно зарегистрировал кнопку загрузки с помощью scriptmanager, чтобы сделать полную обратную передачу. Единственная проблема, с которой я столкнулся, заключается в том, что FileUpload.HasFile всегда возвращает null.
Примечание. Когда я перемещаю элемент управления FileUpload вне поля обновления, все работает с файлом. Есть ли решение или обходное решение для этого.
Спасибо.
Ответы
Ответ 1
Вы можете поместить элемент управления FileUpload в UpdatePanel, но вы должны использовать PostBackTrigger, а не AsyncPostBackTrigger. Недавно я использовал этот подход и объединил оба типа триггеров.
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
<asp:AsyncPostBackTrigger ControlID="btnAsyncSave"/>
</Triggers>
PostBackTrigger использовался для FileUploads, тогда как AsyncPostBackTrigger использовался для всех других полей формы.
Ответ 2
FileUpload не работает внутри UpdatePanel. Вы должны использовать AsyncFileUpload из набора инструментов управления ASPNET AJAX.
Когда вы используете AsyncFileUpload, вы должны установить правильные параметры в теге формы, который помещается в вашу страницу или MasterPage:
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
Если вы не задали правильный enctype и метод UploadedComplete никогда не срабатывали, и вы не сможете получить FileUpload.FileBytes, поскольку FileUpload.HasFile возвращает true только при выполнении UploadedComplete.
Кроме того, предыдущие версии AsyncFileUpload не работали в Chrome. Фактическая версия (4.1.50731.0) решила проблему.
Ответ 3
Это старая проблема, возвращающаяся к MSAjax 1.0. Элемент FileUpload несовместим с тем, как работают панели обновления и диспетчер Script. Загрузка файла изменяет поток данных, заставляя менеджера Script задыхаться. Единственный способ, с помощью которого он будет работать, - установить элемент управления загрузкой файлов вне панели обновления. Если у вас есть другие элементы управления на странице, которые зависят от элемента управления загрузкой файлов, вам нужно установить добавление триггера PostBack.
Ответ 4
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>
есть элемент управления загрузкой файлов вне панели обновления. Если у вас есть другие элементы управления на странице, которые зависят от элемента управления загрузкой файлов, вам нужно установить добавление триггера PostBack.