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

FileUpload.PostedFile всегда null внутри UpdatePanel

У меня есть элемент управления FileUpload внутри UpdatePanel. Я успешно зарегистрировал кнопку загрузки с помощью scriptmanager, чтобы сделать полную обратную передачу. Единственная проблема, с которой я столкнулся, заключается в том, что FileUpload.HasFile всегда возвращает null. Примечание. Когда я перемещаю элемент управления FileUpload вне поля обновления, все работает с файлом. Есть ли решение или обходное решение для этого.

Спасибо.

4b9b3361

Ответ 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.