Вы не можете. Вы можете подделать поведение, открыв всплывающее окно при нажатии на кнопку и попросив всплывающее окно открыть файл и опубликовать страницу обратно из JavaScript. Но таким образом вы эффективно создаете 2 запроса с 2 ответами.
обновление: если вы хотите отключить кнопку, когда они начинают загрузку, и включить ее, как только загрузка начнется, вы не сможете этого сделать, но вы можете использовать некоторые хитрости, чтобы она выглядела так. Когда они нажимают на кнопку загрузки, используйте JavaScript, чтобы отключить кнопку и создать всплывающее окно, которое запускает потоковую передачу файла. Когда функция filestreaming возвращает (WriteToResponse), установите некоторое значение в сеансе пользователя. Тем временем исходная страница опрашивает сервер, используя AJAX, чтобы увидеть, установлено ли значение сеанса. Если установлено, повторно активируйте кнопку и установите значение на пустое или ложное снова (таким образом, это работает во второй раз). Но это похоже на множество уловок.
но я думаю, что в этом случае лечение хуже, чем проблема. Я предполагаю, что вы хотите этого, потому что генерация файла занимает некоторое время, и вы не хотите, чтобы пользователи сбрасывали поток, нетерпеливо нажимая кнопку во время подготовки файла. Для этого я бы просто отобразил всплывающее сообщение на странице при нажатии кнопки, говорящее что-то вроде: «Ваша загрузка готовится. Это может занять минуту. Спасибо за ваше терпение. (Нажмите, чтобы отклонить это сообщение)»