жизненный цикл страницы и невозможность отображать элементы управления за пределами page_init при попытке создать их программно - PullRequest
0 голосов
/ 28 ноября 2010

Я создаю страницу, на которой пользователи могут загрузить файл на веб-сервер.После загрузки на странице будет ссылка на только что загруженный файл, а также на другие файлы, которые уже были загружены.

Поскольку я создаю программно ссылки на файлы, которые были загружены, я должен сделать это в page_init, иначе кнопка ссылки не будет запускать событие при нажатии.Моя веб-страница делает все это - она ​​создает кнопки ссылок и, когда я нажимаю на них, вызывает метод события, необходимый для загрузки файла, то есть подпрограмма.

ОК, проблема, с которой я столкнулся, такова:когда я нажимаю «загрузить» (чтобы загрузить файл) - вызывается субстраница page_init, отображающая все ранее загруженные файлы в виде кнопок ссылок.Затем вызывается моя подпрограмма btnUpload_click, которая загружает мой текущий файл.

Единственная проблема - текущий файл не отображался?Я могу отображать только ссылки в page_init, но поскольку btnUpload вызывается после page_init, текущий файл не загружается до тех пор, пока не будет выполнен page_init, и поэтому не отключен?

Есть идеи, как обойти это?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2010

если вы получаете / сохраняете список ранее загруженных файлов из переменной Session или из базы данных, то в конце события btnUpload_click вы можете просто перенаправить страницу на себя. Like Response.Redirect ("PageName.aspx");

0 голосов
/ 28 ноября 2010
  1. Список всех ссылок на стороне сервера в качестве члена вашего класса: List<LinkButton> myLinks = new List<LinkButton>();

  2. Когда вы создаете ссылки, пока не добавляете их на страницу, добавьте их в список: myLinks.Add(oNewLink);

  3. В методе btnUpload_Click добавьте новую ссылку в глобальный список с правильными значениями.

  4. Добавьте ссылки на страницу в функции Page_PreRender, что происходит после нажатия кнопки.

Если вам нужна дополнительная помощь в реализации этой логики, дайте мне знать. :)

...