从代码隐藏中删除asp.net控件

我需要在validation某个条件时从我的页面中删除一个控件(文本框)。 是否有可能从代码隐藏或我需要使用JavaScript。

注意我需要删除控件,而不是隐藏…

在父ControlCollection上使用Controls.RemoveControls.RemoveAt

例如,如果要从页面顶部删除所有TextBox:

 var allTextBoxes = Page.Controls.OfType().ToList(); foreach(TextBox txt in allTextBoxes) Page.Controls.Remove(txt); 

(请注意,您需要using System.LinqEnumerable.OfType添加)

或者如果要删除具有给定ID的TextBox:

 TextBox textBox1 = (TextBox)Page.FindControl("TextBox1"); // note that this doesn't work when you use MasterPages if(textBox1 != null) Page.Controls.Remove(textBox1); 

如果您只是想隐藏它(并从客户端完全删除它),您也可以使其不可见:

 textBox1.Visible = false; 

虽然你可以从控件集合中删除它,为什么不隐藏它呢?

 yourTextBox.Visible = false; 

这将阻止它被包含在发送到浏览器的生成的html中。

设置.Visible=false ,它将永远不会在页面中呈现。 如果从Controls集合中删除控件,请不要在DataBindInitLoadPreRenderUnload阶段执行此操作,因为它会引发exception。

动态添加或删除控件可能会导致问题。

是的,您可以从页面的controles集合中删除它:

 this.Controls.Remove(control); 

您可以尝试使用此代码 – 基于Remove method

 this.Controls.Remove(YourControl); 

链接: http : //msdn.microsoft.com/en-US/library/system.web.ui.controlcollection.remove(v=vs.80).aspx