Обслуживающий документ Word по нажатию кнопки на странице C # asp.net - PullRequest
1 голос
/ 30 августа 2011

Когда код помещен в событие onClick, он не отображает диалоговое окно открытия сохранения, и никакое исключение не выдается, но работает нормально, событие onLoad открывает открытое диалоговое окно сохранения, чтобы сохранить файл слов.

Ответы [ 3 ]

0 голосов
/ 30 августа 2011

Это может быть связано с тем, что заголовки уже размещены в браузере клиента.Попробуйте очистить с помощью Response.Clear (), убедитесь, что вы не в Ajax-вызове.Другой трюк - открыть новую страницу, используя привязку на стороне клиента с динамически скомпилированным аргументом.

РЕДАКТИРОВАТЬ: конечно, если вы очистите свой ответ, страница будет пустой после запроса пользователя загрузить файл.Всегда помните о синхронном поведении клиент-сервер по протоколу HTTP без сохранения состояния.

0 голосов
/ 30 августа 2011

Полагаю, вы пытаетесь передать данные в strDocBody в виде файла Word пользователю.Для этого эти данные должны быть единственной вещью, которую веб-сервер передает браузеру.Вот почему он отлично работает, когда вы помещаете его в обработчик событий OnLoad.Это не тот случай, когда вы помещаете его в обработчик нажатия кнопки.

Если вы хотите, чтобы такое поведение происходило при нажатии кнопки, эта кнопка должна перенаправить пользователя на другой URL-адрес, который отправит данные документа, и ничего больше.

Создайте страницу специально для обслуживания документа, пусть она будет Document.aspx .Теперь я не знаю, нужно ли вам выполнять какую-либо дополнительную логику при нажатии кнопки.Если нет, вы можете просто использовать LinkButton:

<asp:LinkButton runat="server" ID="docLink" Text="Document" 
                PostBackUrl="Document.aspx" />

В противном случае просто добавьте перенаправление вызова в свой обработчик onClick:

protected void btnButton1_Click(object sender, EventArgs e)
{
    // ....
    Response.Redirect("Document.aspx");
}
0 голосов
/ 30 августа 2011

исходя из моего опыта, это действительно не работает для onClick, так как заголовки уже отправлены.

...