如何在asp.net代码隐藏中创建永久控件

时间:2013-09-01 10:37:14

标签: asp.net web-applications

我必须在后面的代码中添加一些控件到我的项目母版页,但是我想在发布后保留它们。我可以这样做吗?我已经搜索了它,我认为我必须使用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);
    }

2 个答案:

答案 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);
}