我必须在后面的代码中添加一些控件到我的项目母版页,但是我想在发布后保留它们。我可以这样做吗?我已经搜索了它,我认为我必须使用preinit,但我不知道如何,我不知道主页是否有预制。
<form id="form1" runat="server">
<asp:ScriptManager ID="MainScriptmanager" runat="server" EnablePartialRendering="true" />
<asp:UpdatePanel ID="MasterContentUpdatePanel" runat="server" UpdateMode="conditional">
<ContentTemplate>
<asp:TabContainer ID="MainTabContainer" runat="server" ActiveTabIndex="1" TabStripPlacement="Bottom">
</asp:TabContainer>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
protected void Button1_Click(object sender, EventArgs e)
{
tabCount = tabCount + 1;
AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
tab.ID = "tab" + Convert.ToString(tabCount);
tab.HeaderText = "tab" + Convert.ToString(tabCount);
MainTabContainer.Tabs.Add(tab);
}
答案 0 :(得分:0)
是什么阻止您创建控件并将其添加到代码后面的代码中?在设计器中创建一个面板,为其命名,并在您需要的任何地方创建/添加所有控件。 Viewstate将在回发之间保留其内容,您不需要做任何额外的事情。
答案 1 :(得分:0)
您需要在每个回发上重新创建标签。
E.g。您可以在ViewState中存储选项卡的数量。
然后在PostBack上添加标签,例如在您的Page_Load事件处理程序中:
var tabCount = ... get it from ViewState
for(int i=0; i<tabCount; i++)
{
AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
tab.ID = "tab" + Convert.ToString(i+1);
tab.HeaderText = "tab" + Convert.ToString(i+1);
MainTabContainer.Tabs.Add(tab);
}