繁体   English   中英

防止呈现用户控件

[英]Prevent rendering of user control

在我们的asp.net Webforms应用程序中,我们将用户控件动态加载到占位符中。 为了保留回发之间的更改,我们的页面生命周期比平时要复杂一些。 我们总是在pageInit中还原以前的控件结构,以便成功加载我们的viewstate。 只有这样,我们才清除占位符并将新控件加载到其中。

不幸的是,这对旧用户控件和新用户控件都意味着整个生命周期,包括对旧模块的整个.ascx标记文件的服务器端处理。

现在我的问题是:是否有可能最小化旧模块的服务器端处理,因为它永远不会发送回客户端(即完全不需要服务器端渲染)。 我理想地希望实现的是一种“轻量级”的用户控件加载,当它的唯一目的是还原vewstate信息而不会到达客户端时。

该练习的目标是性能优化。

任何提示,想法或建议表示赞赏!

通过简单地检查控件是否可见,已经解决了在动态添加控件的webcontrol生命周期事件中运行的代码( http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.visible.aspx) -

protected void Page_Load(object sender, EventArgs e)
{
    if (this.Visible) 
    {
       //Your code here
    }
}

如果您有不是页面生命周期事件触发的任何方法,而必须由用户操作触发的方法,例如-

protected void Button1_Click(object sender, EventArgs e)
{
   //Do something
}

可以放心地保持原样,直到将控件添加到页面并触发操作后,方法代码才会运行。

尽管可见性检查并不特别优雅,但它可能是处理动态加载的控件上的自动关联事件的最佳方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM