Информация не достаточна. Когда вы создаете элементы управления? Когда вы добавляете их в коллекцию Controls? Что такое условие и оно меняется при обратной передаче?
Состояние просмотра автоматически сохраняется в конце цикла страницы (обратная связь или нет) при условии, что элементы управления будут добавлены в нужное время.
Если вы добавляете элементы управления позже, в каком-то случае после завершения инициализации, то уже слишком поздно.
Update
без кода сложно догадаться, где происходит разрыв вниз. Давайте рассмотрим Repeater с настраиваемым шаблоном, который может загружать элементы управления в какое-то условие. Этот образец работает, но он не сработает, если назначение шаблона было выполнено на странице_Load. Это что-то похожее на вашу ситуацию?
Форма:
<div>
<asp:Repeater ID="repeater" runat="server" />
<asp:Button ID="submitButton" runat="server" Text="Submit" onclick="submitButton_Click" />
<asp:Button ID="postButton" runat="server" Text="PostBack" />
</div>
Код:
public partial class _Default : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
repeater.ItemTemplate = new MyTemplate();
}
protected void Page_Load(object sender, EventArgs e)
{
//however, if I was to move repeater.ItemTemplate = new MyTemplate() here
//it would not reload the view state
if (!IsPostBack)
{
repeater.DataSource = new int[] { 1, 2, 3, 4, 5 };
repeater.DataBind();
}
}
protected void submitButton_Click(object sender, EventArgs e)
{
submitButton.Text = "Do it again";
}
}
public class MyTemplate : IBindableTemplate, INamingContainer
{
#region IBindableTemplate Members
public System.Collections.Specialized.IOrderedDictionary ExtractValues(Control container)
{
OrderedDictionary dictionary = new OrderedDictionary();
return dictionary;
}
#endregion
#region ITemplate Members
public void InstantiateIn(Control container)
{
Label label = new Label();
label.Text = "Label";
container.Controls.Add(label);
TextBox textbox = new TextBox();
container.Controls.Add(textbox);
}
#endregion
}
Элементы управления размещены в разметке и на основе некоторой бизнес-логики, они создаются в шаблоне. Состояние просмотра не загружается, потому что при каждом обратном вызове шаблон снова создается повторно с новым набором контрольных значений, а предыдущее состояние состояния теряется. – 2009-03-20 05:24:26
Я не могу сказать без кода. Я отредактировал свой ответ, чтобы проиллюстрировать теоретическую ситуацию. Я не знаю, похоже ли это на твое. – Ruslan