重用昂贵的UserControls

时间:2010-07-22 14:25:42

标签: c# asp.net user-controls reusability

所以我们有这个以树格式显示数据的遗留代码。他们使用spacer images(... yup..ugh)

填充树的每个节点

不幸的是,这些图像的使用是由我们被迫使用的内部UserControl控制的(基本上只是从Web.UI.WebControls.Image派生而来)。

好吧,事实证明我们有一个巨大的树,有数千个节点,每个节点有四个级别或更多。这意味着每次绘制页面时我们都会创建大约10,000个填充图像,这需要花费相当多的时间。

我现在的解决方案是静态预分配大量这些图像并使用它们。我希望当多个用户同时访问该页面时,不会出现任何肮脏现象。

但是......有没有办法重用一个UserControl,这样我们就可以只创建一个Image的SINGLE实例,并以某种方式多次将它添加到Controls集合中?我天真地尝试过它并没有用。图像只被绘制一次,第一次控制它被添加到第一次(可能与INamingConainer的东西有关......?)

2 个答案:

答案 0 :(得分:2)

只是一个想法,但你不能只用其他用户控件替换填充图像用户控件,例如:

public DivPadder : HtmlGenericControl
{
    public DivPadder() : base("div")
    {
        this.Style.Add("padding:10px");
    }
}

答案 1 :(得分:0)

您是否考虑过在后台线程中加载树的内容?

相关问题