Выполнить код после загрузки Excel в ASP.NET

#asp.net #excel #webforms

#asp.net #excel #веб-формы

Вопрос:

У меня есть фрагмент кода, который загружает Excel с недопустимыми записями после импорта.

Я хочу обновить сетку после такого частичного успешного импорта. Но код после автоматической загрузки Excel не выполняется.

 Response.Clear();
                                    Response.ClearHeaders();
                                    Response.ClearContent();
                                    Response.AddHeader("content-disposition", "attachment; filename="   PathToExcelFile);
                                    Response.AddHeader("Content-Type", "application/Excel");
                                    Response.AddHeader("Content-Length", file.Length.ToString());
                                    Response.WriteFile(file.FullName);
                                    HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
                                    HttpContext.Current.Response.SuppressContent = true;  // Gets or sets a value indicating whether to send HTTP content to the client.
                                    HttpContext.Current.ApplicationInstance.CompleteRequest();
  

Я нашел этот ответ.Flush() выдаст исключение прерывания потока. Следовательно, изменил его на CompleteRequest(). Но, все еще не повезло.

Не уверен, что я делаю не так?

Комментарии:

1. Вы не можете. Вы можете либо загрузить Excel, либо обновить пользовательский интерфейс. Не оба. Если вы хотите оба варианта, вам нужно использовать Ajax или открыть загрузку Excel в новом окне.

Ответ №1:

Сохраните имя файла / путь и т.д. в переменных ViewState, затем вызовите window.open на отдельной странице download.aspx, которая обрабатывает загрузку файла. На странице загрузки укажите переменные ViewState, которые вы ранее установили. На исходной (не загружаемой) странице вы можете выполнить любой код, который вам нравится, после вызова window.open.