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)
那部分工作正常.我假设<%'意味着控件实际上不会被声明,所以不会初始化,但事实并非如此......
如果内联/意大利面条服务器端代码没有帮助,我只能想到一个替代解决方案:避免在标记中声明控件.而是从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)
归档时间: |
|
查看次数: |
3191 次 |
最近记录: |