Iterate though all controls on asp.net page(遍历 asp.net 页面上的所有控件)
问题描述
我正在使用 ascx,我需要遍历所有控件并选择每个将 cssClass 属性设置为必需"的控件.
I'm using ascx and I need to iterate through all of the controls and selects each that have cssClass attribute set to 'required'.
我有以下代码:
foreach (Control masterControl in Page.Controls)
{
if (masterControl is MasterPage)
{
foreach (Control formControl in masterControl.Controls)
{
if (formControl is System.Web.UI.HtmlControls.HtmlForm)
{
foreach (Control contentControl in formControl.Controls)
{
if (contentControl is ContentPlaceHolder)
{
foreach (Control childControl in contentControl.Controls)
{
}
}
}
}
}
}
}
但是.. 我无法访问 childControl.CssClass.如何访问它?
however.. i cannot access childControl.CssClass. How do I access it?
提前致谢!
推荐答案
CssClass
属性是 WebControl 类.
你必须检查控件是否是一个webcontrol,或者,如果它只是一个控件,你可以在attributes集合中获取属性class".
You have to check if the control is a webcontrol, or, if it's only a control, you can get the attribute "class" in the attributes collection.
例如,你可以这样做:
List<WebControl> wcs = new List<WebControl>();
GetControlList<WebControl>(Page.Controls, wcs)
foreach (WebControl childControl in wcs)
{
if(childControl.CssClass == "required") {
// process the control
}
}
您还必须递归迭代.代码在这里找到:使用 C# 递归从 controlcollection 中获取控件集合:
You also have to iterate recursively. Code found here : Using C# to recursively get a collection of controls from a controlcollection :
private void GetControlList<T>(ControlCollection controlCollection, List<T> resultCollection)
where T : Control
{
foreach (Control control in controlCollection)
{
//if (control.GetType() == typeof(T))
if (control is T) // This is cleaner
resultCollection.Add((T)control);
if (control.HasControls())
GetControlList(control.Controls, resultCollection);
}
}
这篇关于遍历 asp.net 页面上的所有控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:遍历 asp.net 页面上的所有控件


- 在 C# 中异步处理项目队列 2022-01-01
- 带问号的 nvarchar 列结果 2022-01-01
- 使用 rss + c# 2022-01-01
- Azure Active Directory 与 MVC,客户端和资源标识同一 2022-01-01
- 是否可以在 .Net 3.5 中进行通用控件? 2022-01-01
- CanBeNull和ReSharper-将其用于异步任务? 2022-01-01
- Windows 喜欢在 LINUX 中使用 MONO 进行服务开发? 2022-01-01
- 在 LINQ to SQL 中使用 contains() 2022-01-01
- C# 通过连接字符串检索正确的 DbConnection 对象 2022-01-01
- 为什么 C# 中的堆栈大小正好是 1 MB? 2022-01-01