Я знаю, что это старо, но я какое-то время ломал голову над этим, так что для всех, кого это может заинтересовать.
Моей первой мыслью было отключить ввод файла под элементом управления.
Мне удалось отключить управление, но, к сожалению, оно перестало работать.Когда сервер запустил AsyncFileUpload_UploadComplete, ввод был ошеломлен, поэтому не было файла для чтения.
<script>
function disableFileUpload(on) {
if (on) {
$('#ajax-file-input input:file').attr('disabled', true);
} else {
$(#ajax-file-input 'input:file').attr('disabled', false);
}
}
function AsyncFileUpload_CheckExtension(sender, args) {
disableFileUpload(true);
return true;
}
function AsyncFileUpload_OnClientUploadComplete(sender, args) {
disableFileUpload(false);
var data = eval('(' + args.d + ')');
for (var key in data) {
var obj = data[key];
for (var prop in obj) {
console.log(prop + " = " + obj[prop]);
}
}
doThingsWith(data);
}
</script>
<div id="ajax-file-input">
<ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1"
OnUploadedComplete="AsyncFileUpload_UploadComplete"
OnClientUploadStarted="AsyncFileUpload_CheckExtension"
OnClientUploadComplete="AsyncFileUpload_OnClientUploadComplete"
runat="server" />
</div>
В итоге я поместил полупрозрачный png поверх элемента управления и показал и скрыл его, чтобы сделатьконтроль недоступен.
Надеюсь, это поможет.
function disableFileUpload(on) {
if (on) {
$("#file-disabled").show();
} else {
$("#file-disabled").hide();
}
}