关于网友提出的“如何清除缓存 |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