我有一个C#/ ASP.NET .aspx页面,声明两个控件,每个控件都代表一个选项卡的内容。我想要一个查询字符串参数(例如?tab = 1)来确定哪两个控件被激活。我的问题是,它们都会经历初始化事件并填充它们的子控件,浪费CPU资源并减慢响应时间。是否有可能以某种方式停用它们,以便它们不经过任何初始化?如何声明C#Web用户控件但停止初始化?
我的.aspx页面中看起来是这样的:
<% if (TabId == 0)
{ %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
else if (TabId == 1)
{ %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
而这部分工作正常。我认为<%的意思是控制不会实际上被宣布,所以不会初始化,但事实并非如此...
我同意意大利面代码需要去。逻辑应该保留在代码隐藏中,以保持面向对象的东西。 – Daniel 2010-04-02 14:42:14
这种方式的效果很好,警告是如果你依赖于视图状态。 Viewstate不会自动加载到动态添加的控件上。 – 2010-04-02 14:44:41
@Chuck:如果我的记忆为我提供了正确的服务(这已经有一段时间了,因为我使用Web表单进行了很多工作),这实际上取决于加载控件时的*。我相信加载'Page_Init'而不是'Page_Load'可以解决(大部分)视图状态问题。 – 2010-04-02 14:50:20