Hai guys,
我使用find控件在内容页面中使用它来查找母版页内的unoreder列表的列表项,
Control home = this.Page.Master.FindControl("list").FindControl("home");
现在我必须将控制主页的ID更改为“当前”,因为要为它应用css ....
答案 0 :(得分:1)
是的,在asp.net中使用css id是个大问题。首先,您可以将服务器控件的id更改为您想要的但是,ASP.NET将根据控件树中控件的位置重新生成它。
我的建议是使用控件的cssclass属性,并将css id替换为class。
答案 1 :(得分:1)
你知道你找到的控件的类型吗? Control和ListItem都没有公开CssClass属性,但ListItem确实公开了它的Attributes属性。
根据评论和other question
进行更新您应该使用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);
}
}
如果它们不是ListItems,则将它们转换为正确的类型,并像以前一样修改属性集合,除非该类型具有CssClass属性。