2010-02-11 41 views
14

Tôi đang cố gắng để sử dụng điều khiển FileUpload trong ASP.NETLàm thế nào để sử dụng một cách chính xác điều khiển ASP.NET FileUpload

Dưới đây là hiện tại thiết lập không gian tên của tôi:

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 

Và trong lớp học của tôi, tôi m chỉ sử dụng:

FileUpload fileUpload = new FileUpload(); 

Tuy nhiên, không có thuộc tính nào thường là một phần của FileUpload dường như có sẵn ... chẳng hạn như .HasFile. Tôi đang cố gắng để làm cho phương pháp bấm nút trong mã phía sau, tôi đã nhận thấy rằng hầu hết việc sử dụng .HasFile là trong mã ở phía trước, tuy nhiên nó đã được sự hiểu biết của tôi rằng điều này không quan trọng.

Có ai biết tại sao không?

Trả lời

48

Điều khiển ASP.NET nên được đặt trong tệp đánh dấu aspx. Đó là cách ưa thích để làm việc với họ. Vì vậy, hãy thêm FileUpload kiểm soát vào trang của bạn. Hãy chắc chắn rằng nó có tất cả các thuộc tính cần thiết bao gồm IDrunat:

<asp:FileUpload ID="FileUpload1" runat="server" /> 

Instance của FileUpload1 sẽ được tự động tạo ra trong/cập nhật * tập tin designer.cs tự động tạo ra mà là một lớp học phần cho trang của bạn. Bạn thường không phải quan tâm đến những gì trong đó, chỉ cần giả định rằng bất kỳ điều khiển trên một trang aspx được tự động khởi tạo.

Thêm một nút đó sẽ làm bài lại:

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

Sau đó đi đến tập tin * bạn .aspx.cs, nơi bạn có mã của bạn và thêm nút điều khiển nhấp chuột. Trong C# nó trông giống như sau:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (this.FileUpload1.HasFile) 
    { 
    this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName); 
    } 
} 

Và đó là nó. Tất cả sẽ hoạt động như mong đợi.

+0

Tôi nghĩ rằng nó sẽ hoạt động tốt nếu bạn đã định nghĩa tệp tải lên tại trang aspx.Nhưng nếu nhà phát triển muốn tạo tệp tải lên tại tệp aspx.cs. Nó hoạt động như thế nào? – Brian

+0

Tôi gặp vấn đề tương tự với vấn đề này đã được thảo luận ở đây.Tôi đã định nghĩa tệp Tải lên tại codebehind.Vì vậy, khi tôi nhấn nút, Nó không hoạt động. – Brian

+0

Tôi cũng đã xác định một sự kiện cho nút.Nhưng nó không hoạt động khi tôi gỡ lỗi. Nút btn = new Buttton.btn.Click + = new EventHandler (btn_onclick); – Brian

1

Thay vì instantiating FileUpload trong mã của bạn đằng sau tập tin, chỉ cần khai báo nó trong tập tin đánh dấu của bạn (.aspx tập tin):

<asp:FileUpload ID="fileUpload" runat="server" /> 

Sau đó, bạn sẽ có thể truy cập vào tất cả các thuộc tính của điều khiển, chẳng hạn như HasFile.

1

Thêm điều khiển FileUpload từ mã phía sau sẽ chỉ hoạt động tốt, nơi có thuộc tính HasFile (ví dụ trong sự kiện Nhấp của bạn).

Nếu các thuộc tính dường như không có sẵn (hoặc là lỗi trình biên dịch hoặc thông qua intellisense), có thể bạn đang tham chiếu một biến khác với bạn nghĩ.

0

Tôi đã nhận thấy rằng khi intellisence không hoạt động đối với một đối tượng thường có lỗi ở đâu đó trong lớp trên mà bạn đang làm việc.

Tùy chọn khác là bạn đã không khởi tạo đối tượng FileUpload dưới dạng biến mẫu. đảm bảo mã:

FileUpload fileUpload = new FileUpload(); 

không nằm trong chức năng trong mã của bạn.

0

Giải pháp của tôi trong mã đằng sau là:

System.Web.UI.WebControls.FileUpload fileUpload; 

Tôi không biết tại sao, nhưng khi bạn đang sử dụng FileUpload mà không System.Web.UI.WebControls nó là tham khảo để YourProject.FileUpload không phải System.Web.UI.WebControls.FileUpload.

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