Я пишу какую-либо панель сообщений в качестве пользовательского элемента управления. Код выглядит следующим образом (укороченный для ясности)Данные, не привязанные к ListView при обратной передаче
protected void Page_PreRender(object sender, EventArgs e)
{
BindMessages(MessageType.Error, ErrListView);
}
private void BindMessages(MessageType type, ListView target)
{
List<string> messages = Session.PopMessages(type);
target.DataSource = messages;
target.DataBind();
}
ASCX:
<asp:ListView runat="server" ID="ErrListView">
<ItemTemplate><li><%# Container.DataItem %></li></ItemTemplate>
</asp:ListView>
код запускается на выполнение по каждому запросу (начальная страница загрузки и обратной передачи), как и должно быть, и сообщения приходят из SessionState
правильно. Однако, если запрос является обратной передачей, сообщения фактически не обновляются (как будто DataBind()
не произойдет).
Кто-нибудь понял, что происходит?
У меня не было бы привязки данных в prerender - слишком поздно в жизненном цикле страницы для некоторых вещей для работы (возможно, вы будете бороться с изменениями после обратной передачи). –
hm, тогда мне нужно другое решение, как получить мои данные клиенту ... потому что очевидно, что сообщения генерируются событиями, поэтому PreRender - это единственное место, где это возможно. – FrankyBoy
@FrankyBoy, который должен работать все же. Вы пытались отладить, чтобы убедиться, что 'Session.PopMessages (type)' возвращает то, что вы ожидаете во время обратной передачи? – Andrei