ASP控件的CSS格式

时间:2009-10-06 14:08:41

标签: asp.net css

我的页面上有一个ASP:Label控件,我想给它一些CSS格式。我知道我可以给它一个CssClass名称,但是,它似乎是错误的,因为我想给它一个特定的定位,因此我正在寻找更类似于html元素的常规“id”属性的东西。

标签的ID是ASP使用的标签,但在生成的实际html中,我得到了不同的ID。

有什么建议吗? 感谢。

5 个答案:

答案 0 :(得分:2)

ASP.Net的下一个版本将更容易为控件指定确切的clientID。目前,您有几种方法可以解决此问题:

内联样式

<asp:Label runat="server" ID="MyLabel" style="..." />

<强>的CssClass

正如您在问题中提到的那样,只需使用css类。如果必须的话,没有什么能阻止你制作那些独特的东西。

编写处理程序以提供样式表

编写样式表时,请将占位符保留在客户端ID的文件中。然后使用http处理程序替换每个请求的实际呈现ID。这并不是很简单,因为样式表请求与html页面请求是分开的,但它肯定是可能的,因此值得一提。

使用容器

由于标签呈现为span标记,如果该范围在特定命名容器中是唯一的,您可以这样选择:

<div id="MyContainer"><asp:Label ID="MyLable" runat="server" /></div>

在你的样式表中:

#MyContainer span { /*...*/ }

使用容器+类

如果容器不够具体,您可以使用该类将其缩小到该容器中:

<div id="MyContainer"><asp:Label ID="MyLable" runat="server" CssClass="MyClass"/></div>    

并在你的样式表中:

#MyContainer span.MyClass { /*...*/ }

答案 1 :(得分:1)

ASP.net实质上打破了CSS ID选择器。为了解决这个问题,我有时会将此ID放在CssClass属性中。


    <style type="text/css">
       input.first-name { /* style me */ }
    </style>

    <asp:TextBox runat="server" ID="firstName" CssClass="first-name" />

您还可以在CssClass属性中添加多个类名


    <style type="text/css">
       input.first-name { /* style me */ }
       input.text-input { /* because ie 6 won't do input[type=text] */ }
    </style>

    <asp:TextBox runat="server" ID="firstName" CssClass="first-name text-input" />

我尽量尝试不使用内联样式或使用控件提供的其他样式属性。

答案 2 :(得分:1)

您唯一的选择是使用CssClass或内联样式。由于ASP.NET自动生成服务器端控件的ID,因此您永远不应该尝试再猜测它们是什么。让Webforms使用优雅的CSS布局可能是一件很大的痛苦。

ASP.NET 4.0将引入ClientID属性,以便将来更容易使用ID属性。

答案 3 :(得分:0)

我认为你可以这样做:

<asp:Label ID+"lblID" style=" [whatever style you want goes in here "] runat="server />

请记住,当控件被渲染时,它会像ctrl.etc ....

一样呈现

或者如果您正在进行定位,则无法将标签包裹在<div>

答案 4 :(得分:0)

是的 - 网络表单令人头痛 - 标识由标签(或其他控件)所在的所有内容部分,面板等组成。

你最好的选择是将CssClass添加到控件中。