我有一个 MasterPage,我的 Usercontrol 在 div 中。
我可以将 visible=false 设置为 UserControl 和包含的 div,这可以正常工作。但是 UserControl 的 Page_Load 总是被命中。
这是设计使然,还是我错过了如何停止进入 UserControl 的 Page_Load 方法的页面执行。
我有一个 MasterPage,我的 Usercontrol 在 div 中。
我可以将 visible=false 设置为 UserControl 和包含的 div,这可以正常工作。但是 UserControl 的 Page_Load 总是被命中。
这是设计使然,还是我错过了如何停止进入 UserControl 的 Page_Load 方法的页面执行。
当您将 UserControl 添加到页面时,它将在每次执行页面时被实例化并添加到 Page.Controls 集合中。当您将 Visible 设置为 false 时,它基本上只是缩短了控件 html 的呈现,因此它不会显示在页面上。
如果您的控件在“Page_Load”中执行了一些昂贵的操作,我将关闭 Visible 属性以规避该操作。
如果控件从未创建,你怎么能告诉它是不可见的?
您不能停止执行进入用户控件的 PageLoad 事件方法。
@joshperry 建议使用 Visible 属性来确定是否在代码中进行耗时的操作是一个不错的选择。
另一个选项是完成 OnPreRender 事件方法中的耗时选项。