2010-02-11 10 views
14

Я пытаюсь использовать элемент управления FileUpload в ASP.NETКак правильно использовать элемент управления ASP.NET FileUpload

Вот моя текущая настройка имен:

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; 

И в моем классе, я м только с помощью:

FileUpload fileUpload = new FileUpload(); 

Однако ни один из атрибутов, которые обычно являются частью FileUpload, кажется, будут доступны ... такие как .HasFile. Я пытаюсь сделать метод нажатия кнопки в коде позади, я заметил, что большая часть использования .HasFile находится в коде впереди, однако я понимаю, что это не имеет значения.

Кто-нибудь знает, почему?

ответ

48

Элементы управления ASP.NET следует скорее размещать в файле разметки aspx. Это предпочтительный способ работы с ними. Поэтому добавьте FileUpload элемент управления на свою страницу. Убедитесь, что он имеет все необходимые атрибуты, включая ID и runat:

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

Инстанции FileUpload1 будет автоматически создан в автоматически генерируемой/обновленный * .designer.cs файл, который представляет собой частичный класс для вашей страницы. Обычно вам не нужно заботиться о том, что в нем, просто предположите, что любой элемент управления на странице aspx автоматически создается.

Добавить кнопку, которая будет делать запись обратно:

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

Затем перейдите в * .aspx.cs файл, в котором у вас есть свой код и добавить кнопку обработчик щелчка. В C# это выглядит так:

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

И все. Все должны работать должным образом.

+0

Я думаю, что он будет работать нормально, если вы определили файловую загрузку на странице aspx. Но если разработчик хочет создать fileupload в файле aspx.cs.Как он работает? – Brian

+0

У меня проблема, такая же проблема, что обсуждалось здесь. Я определил fileUpload на codebehind.So, что, когда я нажимаю кнопку, ничего не работает. – Brian

+0

Я также определил событие для кнопки. Но это не сработало, когда я его отлаживал. Кнопка btn = new Buttton.btn.Click + = new EventHandler (btn_onclick); – Brian

1

Вместо инстанцирования FileUpload в коде позади файла, объявите его в файле разметки (.aspx файл):

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

Тогда вы сможете получить доступ ко всем свойствам управления, таких как HasFile.

1

Добавление элемента управления FileUpload из кода позади должно работать нормально, если свойство HasFile должно быть доступно (например, в событии Click).

Если свойства не отображаются (либо как ошибка компилятора, либо через intellisense), вероятно, вы ссылаетесь на другую переменную, чем вы думаете.

0

Я заметил, что когда intellisence не работает для объекта, обычно есть ошибка где-то в классе выше, над которым вы работаете.

Другой вариант заключается в том, что объект FileUpload не был создан как переменная экземпляра. удостоверьтесь, что код:

FileUpload fileUpload = new FileUpload(); 

не находится внутри функции в вашем коде.

0

Мое решения в коде было:

System.Web.UI.WebControls.FileUpload fileUpload; 

Я не знаю, почему, но когда вы используете FileUpload без System.Web.UI.WebControls он ссылающийся на YourProject.FileUpload не System.Web.UI.WebControls.FileUpload.

 Смежные вопросы

  • Нет связанных вопросов^_^