2010-08-27 1 views
2

У меня возникла проблема с Webusercontrol с элементом управления asyncfileupload. Мой websusercontrol загружается в элемент управления, который обернут обновлением. В качестве asyncpostback я должен загрузить и очистить элементы управления заполнителя.Asyncfileupload не работает в webusercontrol

Webusercontrol работает безупречно, кроме asyncfileupload, который вообще не хочет загружать. Я могу заверить, что код без ошибок, потому что я использовал webusercontrol, работающий как сайт * .aspx.

Я полагаю, что проблема заключается в том, что элемент управления должен быть очищен и перезагружен с каждым asyncpostback?

ответ

1

Я думаю, что проблемы возникают после того, как вы разместите свой контроллер AsyncFileUpload внутри динамически загруженного пользовательского элемента управления.

мне удалось get around this issue after reading this link

В принципе, я поставил манекен контроль AsyncFileUpload на .aspx странице родительского.

E.g. Default.aspx

<span style="display:none"> 
     <asp:AsyncFileUpload ID="DummyAsyncFileUpload" runat="server" /> 
    </span> 

Обратите внимание, что управление AsyncFileUpload скрыто от пользователей, но до сих пор видны на ASP.NET.

Моя теория такова:

Для того, чтобы загрузить файлы, вы должны размещать контент вашей формы, используя другой тип кодировки (multipart/form-data).

Когда вы размещаете свой AsyncFileUpload внутри UpdatePanel, ASP.NET по какой-либо причине не устанавливает тип кодировки вообще и оставляет его пустым.

например. document.forms[0].enctype = ''

Таким образом, при отправке вашей формы он не знает, что делать с загрузкой файла.

Поместив фиктивный AsyncFileUpload на страницу Default.aspx, ASP.NET обнаруживает наличие элемента управления FileUpload и соответствующим образом задает тип кодировки.

например. document.forms[0].enctype = 'multipart/form-data'