Почему мой Button отправляет два постбэка при загрузке zip-файла? - PullRequest
1 голос
/ 15 января 2009

У меня проблема с приложением WebForms , где пользователь выбирает некоторые критерии из раскрывающихся списков на странице и нажимает кнопку на странице, которая вызывает этот метод:

protected void btnSearch_Click(object sender, EventArgs e)

Затем они нажимают кнопку, чтобы загрузить ZIP-файл, основываясь на критериях, которые вызывают этот метод:

protected void btnDownload_Click(object sender, EventArgs e)

В IE им предлагается строка в верхней части браузера, которая сообщает им:

"Чтобы защитить вашу безопасность, Internet Explorer заблокировал этот сайт от загрузки файлов на компьютер ".

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

Response.ContentType и Response.AddHeader установлены правильно.

Проблема в том, что btnSearch добавляет критерии, поэтому в основном он добавляется дважды и вызывает проблемы.

Могу ли я что-нибудь сделать, чтобы предотвратить это?

Это веб-приложение VS2008, использующее C # 3.5, чего стоит.

Ответы [ 3 ]

1 голос
/ 18 марта 2010

Когда они нажимают кнопку загрузки, выполните Перенаправление на обработчик файла ZIP (страница?), Чтобы загрузить файл. то есть использовать шаблон Post-Redirect-Get: http://en.wikipedia.org/wiki/Post/Redirect/Get

0 голосов
/ 15 января 2009

Сохранить логическое значение в сеансе, указывающее, что критерии уже добавлены. Когда пользователь выбирает другое значение из раскрывающихся списков, установите для этого значения значение false.

Внутри вашего события btn_Download вы можете проверить значение переменной Session и не устанавливать критерии дважды.

0 голосов
/ 15 января 2009

Вы используете заголовок Content-Disposition?

Response.AddHeader("Content-Disposition", "attachment; filename=fileName.zip");

Попробуйте изменить тип содержимого в соответствии с типом файла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...