2011-06-07 51 views
12

Tôi có một điều khiển FileUpload bên trong UpdatePanel. Tôi đã đăng ký thành công nút tải lên với trình quản lý tập lệnh để thực hiện đăng lại đầy đủ. Vấn đề duy nhất tôi có là FileUpload.HasFile luôn trả về null. Lưu ý: Khi tôi di chuyển điều khiển FileUpload bên ngoài tập tin cập nhật tất cả mọi thứ hoạt động. Có giải pháp hay giải pháp cho việc này không.FileUpload.PostedFile luôn luôn rỗng bên trong UpdatePanel

Cảm ơn.

+1

bản sao có thể có của [UpdatePanel với điều khiển UploadFile không hoạt động tốt] (http://stackoverflow.com/questions/6225545/updatepanel-with-uploadfile-control-doesnt-work-well) – vcsjones

+0

không thực sự ..... – Steven

+0

Sử dụng [AsyncFileUpload-Control] (http://www.asp.net/ajax/ajaxcontroltoolkit/samples/asyncfileupload/asyncfileupload.aspx). –

Trả lời

12

Bạn có thể đặt một điều khiển FileUpload trong UpdatePanel nhưng bạn phải sử dụng PostBackTrigger như trái ngược với AsyncPostBackTrigger. Gần đây tôi đã sử dụng phương pháp này và kết hợp cả hai loại kích hoạt.

<Triggers> 
     <asp:PostBackTrigger ControlID="btnSave" /> 
     <asp:AsyncPostBackTrigger ControlID="btnAsyncSave"/> 
    </Triggers> 

PostBackTrigger được sử dụng cho Tệp tải lên trong khi AsyncPostBackTrigger được sử dụng cho tất cả các trường biểu mẫu khác.

+1

Nút của tôi đang lưu tên tệp và một số giá trị khác vào cơ sở dữ liệu. id của nó là 'btnSave', sau đó những gì ControlID sẽ ở trong PostBackTrigger và những gì trong AsyncPostBackTrigger. Mã của bạn có vẻ như bạn có 2 nút? – SMI

+0

Mã của tôi là cho một ví dụ cụ thể về điều khiển FileUpload bên trong UpdatePanel - điều này chỉ hoạt động với PostBackTrigger, không hoạt động với AsyncPostBackTrigger. Tôi có 2 nút cho các điều khiển khác mà tôi đã sử dụng mà không phải là FileUpload và vì vậy có thể làm việc Asyncrounsly. –

+0

yup, đã nhận nó, cảm ơn :) – SMI

3

Đây là sự cố cũ về cách quay lại MSAjax 1.0. Điều khiển FileUpload không tương thích với cách Update Panels hoạt động và Script Manager. Tệp tải lên sửa đổi luồng dữ liệu khiến trình quản lý tập lệnh bị tắt. Cách duy nhất nó sẽ làm việc là để có File Upload Control bên ngoài bảng cập nhật. Nếu bạn có các điều khiển khác trên trang phụ thuộc vào điều khiển tải lên tệp, bạn cần đặt thêm trình kích hoạt PostBack.

5

FileUpload không hoạt động bên trong UpdatePanel. Bạn phải sử dụng AsyncFileUpload từ Bộ công cụ kiểm soát AJAX ASPNET.


Khi bạn sử dụng AsyncFileUpload bạn phải thiết lập các params ngay trong dạng thẻ, được đặt trong trang hoặc MasterPage của bạn:

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

Nếu bạn không thiết lập các enctype phải và phương pháp Đã tải lênComplete sẽ không bao giờ kích hoạt và bạn sẽ không thể nhận được FileUpload.FileBytes kể từ FileUpload.HasFile trả về true chỉ trong khi thực thi UploadedComplete.


Bên cạnh đó, các phiên bản prevoius của AsyncFileUpload không hoạt động trên Chrome. Phiên bản thực tế (4.1.50731.0) đã giải quyết được sự cố.

0
<Triggers> 
     <asp:PostBackTrigger ControlID="btnSave" /> 
</Triggers> 

có Kiểm soát tải lên tệp bên ngoài bảng cập nhật. Nếu bạn có các điều khiển khác trên trang phụ thuộc vào điều khiển tải lên tệp, bạn cần đặt thêm trình kích hoạt PostBack.

Các vấn đề liên quan