Я хочу создать серверный элемент управления, который наследуется от System.Web.UI.WebControls.MultiView.
Элемент управления будет содержать коллекцию серверных элементов управления, которые наследуются от System.Web.UI.WebControls.View в свою очередь. Однако, когда я добавляю одно представление в коллекцию View элемента управления, ничто не обрабатывается ...
public class WizardMultiview : System.Web.UI.WebControls.MultiView
{
// field
private WizardStart _start;
override CreateChildControls()
{
this._start = new WizardStart(); // custom view
this._start.ID = "WizardStart1";
this.Views.Add(this._start);
this.ActiveViewIndex = 0;
}
override Render(HtmlTextWriter writer)
{
// NOTE: at this point the control can't render itself.
}
}
Затем в Default.aspx.cs я делаю:
public void Page_Load(object sender, EventArgs e)
{
My.Controls.WizardMultiview view = new My.Controls.WizardMultiview();
this.Panel1.Controls.Add(view); // this is a Panel on the Default.aspx page
}
Пользовательский элемент управления View выглядит следующим образом:
public class WizardStart : System.Web.UI.WebControls.View
{
override Render(HtmlTextWriter writer)
{
writer.WriteLine("I am the starting point");
}
}
Когда я добавляю этот элемент управления на страницу ASPX, ничего не происходит. Но если я создаю MultiView и добавляю MultiView в коллекцию элементов управления CompositeControl и добавляю представление в этот MultiView, он работает нормально? Я уверен, что то, чего я хочу достичь, возможно?