У меня есть кнопка на главной странице, которая при нажатии вызывает метод, который принимает ранее сохраненный EventNandler в viewstate, этот метод находится на клиентской странице и выполняет его:Обработчик событий на главной странице, доступ к элементам управления на странице клиента
protected void Save_Click(object sender, EventArgs e)
{
this.SaveButtonEvent += (EventHandler)ViewState["saveEvent"];
if (this.SaveButtonEvent != null)
{
this.SaveButtonEvent(sender, e);
}
}
Это затем вызывает очень простой метод на странице клиента:
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = TextBox2.Text;
}
Однако значение TextBox2 неверно, это значение текстового поля, который был установлен, когда страница загружена (или если какой-либо другой элемент на страницах меняет его), новое значение не будет передано.
Если я добавляю кнопку на клиентскую страницу, которая вызывает событие Button2_Click напрямую, она получает правильное значение.
Является ли причина, по которой я не получаю правильное значение текстового поля, потому что событие вызывается с главной страницы? Любые решения?
Я должен добавить, что эта кнопка создается динамически, и делегат события будет меняться, поэтому я должен установить его во время выполнения. Мне нужно установить делегат на клик и сохранить его до тех пор, пока он не будет изменен.
Ах, это имеет смысл (хотя я пытался сохранить его в сессии тоже, с тем же результат) можете ли вы предложить, где я могу хранить его между postbacks? –
@Sam: вы не можете сохранять объекты управления между postbacks, они должны быть созданы для объекта страницы, где они будут использоваться. Даже если бы это было возможно, это было бы бесполезно, поскольку на текущей странице не было контроля, поэтому их изменение не имело бы видимого эффекта. Вы должны получить доступ к элементам управления, которые находятся в текущем объекте страницы. Направьте ссылку 'Page' на фактический класс страницы, чтобы вы могли получить доступ к ее членам, например:' ((TheClientPage) Страница) .Label1.Text'. – Guffa
спасибо, я закончил тем, что делал что-то очень похожее на это и получал обработчик событий в нужное время. –