<%= 1 %> 如我有如上HTML 然后有代码 protected void Page_Load(object sender, EventArgs e) {" />
您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> 如何清除缓存 |zyciis| 如何清除一个有“控件包含代码块”的子控件,谢谢

如何清除缓存 |zyciis| 如何清除一个有“控件包含代码块”的子控件,谢谢

来源:网络整理     时间:2016/7/4 22:32:58     关键词:如何清除缓存

关于网友提出的“如何清除缓存 |zyciis| 如何清除一个有“控件包含代码块”的子控件,谢谢”问题疑问,本网通过在网上对“如何清除缓存 |zyciis| 如何清除一个有“控件包含代码块”的子控件,谢谢”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:如何清除缓存 |zyciis| 如何清除一个有“控件包含代码块”的子控件,谢谢
描述:



    
    <%= 1 %>


如我有如上HTML
然后有代码

protected void Page_Load(object sender, EventArgs e)
{
   this.Controls.Remove(lblName);
}

报错:
控件包含代码块(即 <% ... %>),因此无法修改控件集合。
在不更改HTML的情况下,如何在后台代码移除掉我的lblName控件
谢谢

PS:我页面一定要用到代码块,所以HTML不能修改的情况下删除那个lblName控件
谢谢
解决方案1:

今天有点忙,这个问题没深入研究。
写了个山寨的解决方案


Type type = Controls.GetType();
            System.Reflection.FieldInfo field = type.GetField("_controls", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            for (int i = 0; i < Controls.Count; i++)
            {
                if (Controls[i] == lbl)
                {
                    //Controls.RemoveAt(i);
                    Control[] myControlArray = new Control[Controls.Count];
                    Controls.CopyTo(myControlArray, 0);
                    myControlArray[i] = new LiteralControl();
                    
                    //这句也可以换成使用集合的特性移除相关控件,我这里只是替换。
                       //Array.Copy
                    if (field != null)
                    {
                        field.SetValue(Controls, myControlArray);
                    }
                    break;
                }
            }

以上介绍了“如何清除缓存 |zyciis| 如何清除一个有“控件包含代码块”的子控件,谢谢”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2283282.html

如何清除缓存相关图片

如何清除缓存相关文章