如何声明C#Web用户控件但是不能初始化它?

Sco*_*ord 5 c# asp.net user-controls initialization

我有一个C#/ ASP.NET .aspx页面,它声明了两个控件,每个控件代表一个选项卡的内容.我想要一个查询字符串参数(例如,?tab = 1)来确定激活两个控件中的哪一个.我的问题是,它们都经历了初始化事件并填充了它们的子控件,浪费了CPU资源并减慢了响应时间.是否有可能以某种方式停用它们以便它们不进行任何初始化?

我的.aspx页面如下所示:

<% if (TabId == 0)
   { %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
   else if (TabId == 1)
   { %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
Run Code Online (Sandbox Code Playgroud)

那部分工作正常.我假设<%'意味着控件实际上不会被声明,所以不会初始化,但事实并非如此......

Jør*_*ode 7

如果内联/意大利面条服务器端代码没有帮助,我只能想到一个替代解决方案:避免在标记中声明控件.而是从Page_Init事件处理程序加载您真正想要的控件在页面上.该Page.LoadControl()方法可用于此:

void Page_Init(object sender, System.EventArgs e)
{
    Control tab;

    switch (TabId)
    {
        case 0: tab = LoadControl("usercontroltabone.ascx"); break;
        case 1: tab = LoadControl("usercontroltabtwo.ascx"); break;
        default: tab = LoadControl("defaulttab.ascx"); break;
    }

    somePlaceholder.Controls.Add(tab);
}
Run Code Online (Sandbox Code Playgroud)