Как очистить свойство hasfile в элементе управления asp: FileUpload?

У меня есть элемент управления загрузкой файлов .NET 2.0, а рядом с ним кнопка, например:

<asp:fileupload id="uploadedFile" runat="server" />
<asp:Button runat="server" ID="upload" Text="Upload" OnClick="Page_Load"/>

Теперь все это находится на странице в веб-части (т. е. в SharePoint — для тех из вас, кто не знаком с веб-частями — это в основном iframe). Заметьте также, что я вызываю Page_Load.

После того, как пользователь просматривает файл, свойство hasfile элемента управления uploadedFile становится true (сначала оно было false). Отлично. Пользователь нажимает кнопку, и файл загружается. У меня есть код, который отправляет мне электронное письмо, чтобы сообщить мне, что файл был загружен, если hasfile равно true.

Если пользователь нажимает кнопку обновления в своем браузере, страница перезагружается, но свойство hasfile не очищается, и поэтому мне отправляется еще одно электронное письмо! (Если я использую возможность Firefox перезагружаться без кеша, то все обновляется правильно)

Как очистить свойство hasfile в элементе управления FileUpload? Или как заставить страницу пропускать кеш при перезагрузке пользователя?

Я не возражаю против вызова функции, отличной от Page_Load, но тогда она должна иметь возможность получать параметр, чтобы я также мог вызывать ее из Page_Load (из-за других вещей, которые я делаю).


person bgmCoder    schedule 08.05.2012    source источник


Ответы (2)


Добавьте функцию очистки свойства hasfile в функцию LoadPage(), которая, как ни странно, вызывается при обновлении (по мере загрузки страницы).

Или, может быть, вместо того, чтобы размещать функциональность, закодируйте функцию, которая реализует указанную функциональность, и вызовите ее при загрузке страницы. Код руководства :

private void clearFileUpload()
{
    fileUpload.Dispose();
}

OR

попробуйте решить проблему сразу после загрузки файла.

private void clearFileUpload()
{
    fileUpload.PostedFile.InputStream.Dispose();
    // fileUpload.HasFile is now  false
}
person Lyuben Todorov    schedule 08.05.2012
comment
Точно так же это не работает для меня, когда вызывается из события нажатия кнопки, объявленного вне класса Page_Load() в файле кода программной части .cs. Я не тестировал вложение функции внутри Page_Load() и вызывал ее извне. - person TylerH; 19.04.2019

Я делаю это, чтобы очистить FileUpload:

fubanner.Attributes.Clear();
person Vipin G    schedule 09.03.2017