我的页面上有 11 个这样的控件,都是复选框。 它包含在母版页中。
我可以像这样完成我想要的:
generalInformation.InputAttributes.Add( "class", "SetupChecklist" );
generalInformation2.InputAttributes.Add( "class", "SetupChecklist" );
generalInformation3.InputAttributes.Add( "class", "SetupChecklist" );
等。。
我现在正在尝试遍历这些并做同样的事情来为自己节省一些代码,但我在让它正常工作时遇到了很多麻烦,好吧,我根本无法让它工作。
谁能给我一个好方法来循环浏览这 11 个复选框控件并添加 css 类设置清单?
我试过这个,但由于某种原因它没有添加类。
protected void InitializeCheckboxes ()
{
//generalInformation.InputAttributes.Add( "class", "SetupChecklist" );
var allCheckBoxes = Page.Controls.OfType<CheckBox>();
foreach ( var c in allCheckBoxes )
{
c.InputAttributes.Add( "class", "SetupChecklist" );
}
}
我去用Page_Load方法调用InitializeCheckboxes();
。 当我只使用generalInformation.InputAttribues.Add等时,它确实有效。 但当我循环浏览它们时不会。 有什么建议吗?
最好将它们放在Panel
(呈现为div)或其他容器控件中。然后你可以使用 LINQ 的OfType
获取引用:
// assuming all checkboxes are in a panel named "SetupContainer"
var allCheckBoxes = SetupContainer.Controls.OfType<CheckBox>();
foreach(var chb in allCheckBoxes)
chb.InputAttributes.Add( "class", "SetupChecklist" );
当然,您也可以使用它来查找整个页面上的所有复选框,但这可能容易出错。
未经测试,但可能会对您有所帮助。
foreach(Control oControl in Page.Controls)
{
if(oControl is CheckBox && ((CheckBox)oControl).ID.StartsWith("generalInformation") )
((CheckBox)oControl).InputAttributes.Add( "class", "SetupChecklist" );
}
由于runat = "server"
,您的复选框将呈现如下。
<span class="SetupChecklist" class="SetupChecklist" name="generalInformation">
<input id="generalInformation" type="checkbox" name="generalInformation" />
</span>
杰奎里
<script type="text/javascript" language="javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" language="javascript" src="Scripts/jquery-1.4.1.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$(this).find("input[type='checkbox']").addClass('GuestClass');
});
</script>
这将节省您执行以下步骤的时间。
- 从客户端转到
- IIS 网络服务器
- ISAPI 扩展
- ISAPI 扩展加载/执行/将 aspx 转换为 HTML
- 发送回 IIS Web 服务器。
- IIS 响应客户端
public void GetUserControls(ControlCollection controls)
{
foreach (Control ctl in controls)
{
if (ctl is CheckBoxOrWhateverControlTypeYouWant)
{
/// Add attribute
}
if (ctl.Controls.Count > 0)
GetUserControls(ctl.Controls);
}
}