注册ASP.NET页面或母版页中的.ascx ASP.NET用户控件是否会加载?

时间:2012-01-30 11:51:34

标签: c# asp.net user-controls ascx web-user-controls

如果我在ASP.NET页面中注册用户控件,控件是否会加载到页面? <%@ Register Src=".." TagName="tag" TagPrefix="pre" %>
即使我没有在页面中使用?来调用它 <pre:tag id='control123' />

因为即使我没有调用控件,我的部分代码也会被执行,我发现当我进行性能分析时。

2 个答案:

答案 0 :(得分:7)

在这种情况下,您的用户控件将被加载到服务器端的页面对象,这意味着它将在ASP.NET应用程序的整个生命周期中处理,但由于您不创建控件实例,因此将输出非输出html 。您使用的是“类型”,但不是“实例”。

回答你的问题:是的,它会被加载,但不会被渲染,数据库等......

2012年2月7日编辑

如果你想摆脱注册指令,你总是可以使用web.config - 按照this Scottgu帖子的说明进行操作。

答案 1 :(得分:1)

Register指令仅用于在前缀和控件之间创建关联。只有在声明性地加载控件时才有意义。它只是让开发变得容易。

除非您已在某处声明了控件的实例,否则无法调用Page_Load或任何私有方法。

此外,如果您没有在代码中的任何地方使用过,则不应该使用Register指令。 IMO我不认为Register指令导致了这个问题。