用CSS控制.ClientID

时间:2009-06-24 14:29:35

标签: asp.net css

是否可以将css与生成ClientID而非常规ID的控件一起使用?

我现在可以使用cssClass,但我想知道是否可以使用id:

#DivParrentId #LAbelControlId
{

    padding:100px;
    color:Red;
}

2 个答案:

答案 0 :(得分:8)

没有一个好方法可以做到这一点。许多开发人员使用这样的东西:

<style>
#<%= MyControl.ClientID %>
{
    padding:100px;
}
</style>

但坦率地说,我不是它的忠实粉丝。它非常标记 - 浓郁而脆弱。从ASP.NET 4.0开始,您将能够在代码中控制元素的ClientID,因此您可以为使用CSS或JS定位的元素指定ID。

与此同时,我建议使用课程。在我工作的系统中,我们需要类和禁用任何客户端代码(CSS或JS)的ID,因为它不值得额外的开销。类可以作为ID工作得很好 - 没有什么能阻止你拥有许多独特的(一次性使用)类,并且从可维护性的角度来看,这样做并没有真正的问题。

答案 1 :(得分:0)

有可能在几个方面,其中没有一个是优雅的。

您可以预测生成的ID:

#ctl$00_mycontainer_idofmylabel
{
    padding: 100px;
}

您可以动态创建css类名称

cssLiteral.Text = "#" + myLabel.ClientID + @"{ padding: 100px; }";

您可以覆盖标签的ClientID

myCustomLabel.ClientID = "myHandCraftedId" // where myCustomLabel is an instance of some CustomLabel class that extends Label and overrides ClientID property.