嘿伙计们,
我使用查找控件从内容页面中查找母版页内的无序列表的列表项,
Control home = this.Page.Master.FindControl("list").FindControl("home");
现在我必须将控件主页的 id 更改为“当前”,因为要为其应用 css....
嘿伙计们,
我使用查找控件从内容页面中查找母版页内的无序列表的列表项,
Control home = this.Page.Master.FindControl("list").FindControl("home");
现在我必须将控件主页的 id 更改为“当前”,因为要为其应用 css....
是的,在 asp.net 中使用 css id 是一个大问题。首先,您可以将服务器控件的 id 更改为您想要的,但是,这将由 ASP.NET 重新生成,具体取决于控件在页面控件树中的位置。
我的建议是使用控件的 cssclass 属性,并将 css id 替换为 class。
您知道您要查找的控件的类型吗?Control和ListItem都没有公开 CssClass 属性,但是 ListItem 确实公开了它的 Attributes 属性。
根据评论和其他问题更新:
你应该使用System.Web.UI.HtmlControls.HtmlGenericControl
所以这样的事情应该适合你:
HtmlGenericControl home =
this.Page.Master.FindControl("list").FindControl("home")
as HtmlGenericControl;
string cssToApply = "active_navigation";
if (null != home) {
home.Attributes.Add("class", cssToApply);
}
如果您认为可能已经分配了一个需要附加的类,则可以执行以下操作:
if (null != home) {
if (home.Attributes.ContainsKey("class")) {
if (!home.Attributes["class"].Contains(cssToApply)){
// If there's already a class attribute, and it doesn't already
// contain the class we want to add:
home.Attributes["class"] += " " + cssToApply;
}
}
else {
// Just add the new class
home.Attributes.Add("class", cssToApply);
}
}
如果它们不是 ListItem,则将它们转换为正确的类型,并像以前一样修改属性集合,除非该类型有 CssClass 属性。