Я перечисляю папки и файлы на диске E, я использую скрытое поле, чтобы сохранить путь, я создал несколько кнопок ссылок, представляющих папки, они создаются программно в событии Page_PreLoad ():
protected void Page_PreLoad(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(hdfPath.Value))
{
path = "E:\\" + hdfPath.Value;
directories = Directory.GetDirectories(path);
files = Directory.GetFiles(path);
}
else
{
directories = Directory.GetDirectories("E:\\");
files = Directory.GetFiles("E:\\");
}
for (int i = 0; i < directories.Length; i++)
{
LinkButton lkbLink = new LinkButton();
lkbLink.Click += new EventHandler(btn_Click);
void btn_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(hdfPath.Value))
hdfPath.Value = folderName;
else
hdfPath.Value += "\\" + folderName;
}
}
}
Когда я нажимаю любую кнопку ссылки, сначала запускается событие Page_PreLoad (), затем событие btn_Click (), хотя я ожидал, что сначала будет запущена btn_Click (). В этом случае соответствующее значение в скрытом поле принадлежит значению предыдущего шага.
Что-то не так с выбранным мной жизненным циклом ASP. Net?
Как я могу заставить его немедленно установить значение скрытого поля, когда пользователь нажимает кнопку ссылки, чтобы было взято (правильное) текущее значение в скрытом поле?