оставьте SubmitBtn в качестве PostBackTrigger, но не устанавливайте его как "OkControlID" для modalpopupextender.
в подпрограмме Submitbtn_Click на стороне сервера вызовите yourModalpopupextenderID .hide (), если загрузка завершена, поэтому всплывающее окно Modal закрывается, только если нет ошибки.
Вы можете использовать AsyncFileUpload из AjaxControlToolkit
Вот в качестве примера некоторый код, показывающий, как его использовать:
<AjaxControlToolkit:AsyncFileUpload ID="AttachementsFileUpload"
runat="server"
OnUploadedComplete="AttachementsFileUpload_UploadedComplete"
OnClientUploadComplete="uploadComplete" />
<script type="text/javascript">
var UpdateAttachementsGridViewButton = '<%= UpdateAttachementsGridViewButton.ClientID %>';
function uploadComplete(sender, args) {
$get(UpdateAttachementsGridViewButton).click();
}
</script>
Как видите, когда загрузка завершена, я использую Javascript, чтобы вызвать нажатие скрытой кнопки. Тем временем я извлекаю файл в AttachementsFileUpload_UploadedComplete, используя что-то вроде этого:
Dim AttachementsFileUpload As AjaxControlToolkit.AsyncFileUpload = AnnouncementFormView.FindControl("AttachementsFileUpload")
Attachements.add(e.filename, AttachementsFileUpload.FileBytes)
Это то, как я использовал это в моей ситуации, но вы найдете множество примеров того, как это работает