我正在为我的项目使用asp.net/C#
。目前我有一个default.aspx
页面和一个母版页。default.aspx
页面有很多控件,对于我定义的每个控件{{ 1}}和class
。我面临的问题是,当我使用id
将style
应用于特定控件时,样式会被正确反映,当我使用控件的id执行此操作时,样式不会被反映出来。
我纠正了这个问题,但我不知道如何解决这个问题。
例如,
我有一个class
textbox
,当我应用
id="txtCustNo"
它没有反映,,,当我应用类似#txtCustNo{border:1px solid red}
的样式时,它会显示更改,但是id为#ctl00_ContentPlaceHolder1_txtCustNo
..有人可以指出我哪里出错了。谢谢。
答案 0 :(得分:4)
服务器控件上的ID是自动生成的,与客户端生成的ID不同。
您可以通过以下方式找到生成的ID:<%#txtCustNo.ClientID%>
ASP.NET 4在Control基类上支持新的ClientIDMode属性。 ClientIDMode属性指示控件在呈现时应如何生成客户端ID值。 ClientIDMode属性支持四种可能的值:
在4.0之前使用ASP.Net时,您必须使用自动生成的ID。
有关4.0功能的更多信息,请参阅此链接。
答案 1 :(得分:3)
客户端ID不等于runat="server"
控件的ID
property。要在客户端上获取ID,您可以使用ClientID
property。
在较新的ASP.NET版本(从版本4开始),还有一个ClientIDMode
property来控制生成。
因此,要解决您的问题,您可以将ClientIDMode
设置为ClientIDMode.Static
或以某种方式从后面的代码访问ClientID
属性,并将此值放入CSS定义中。
或者你也可以:
div
)中,该控件具有 no runat="server"
并将ID放入此容器控件中,将CSS更改为例如#txtContainer input{border:1px solid red}
CssClass
property并在CSS文件中使用此类,而不是ID。答案 2 :(得分:1)
ClientIDMode="Static"
此外,如果您尝试通过CSS设置控件的样式,只需在它周围包裹一个div&然后应用样式(这些应用于div中的所有输入)
divId输入{
width: 100px; }