对于Eg,我有一个带id="txtkms"
的aspx文本框
在html视图源中,我可以看到它呈现为ContentPlaceHolder1_Gridview1_txtkms_1
我的问题是..每次在任何浏览器或任何其他计算机上运行我的aspx页面时,此控件txtkms
始终呈现为ContentPlaceHolder1_Gridview1_txtkms_1
。
答案 0 :(得分:2)
我从未见过它会发生变化,但将ClientID传递给您将使用它的javascript更安全......
答案 1 :(得分:1)
为控件生成的ID实际上仅取决于您定义的设置,或者如果您未指定任何设置,则取决于默认设置适用。
根据您为网页/控件的 ClientIDMode
属性设置的内容,控件ID可以与您在标记中放置的完全相同,也可以附加命名容器的ID用下划线字符(_)分隔。
例如,当您设置ClientIDMode="Static"
时, ClientID
值将设置为您在标记中设置的ID
属性的值。
[ClientID是ASP.NET生成的HTML标记的控件ID]
此外,当您设置ClientIDMode="AutoID"
时,通过将每个父命名容器的ID
值与{{1}连接来生成 ClientID
值控件的值。此外,在呈现控件的多个实例的数据绑定方案(例如repeater,GridView ..)中,将在控件的ID
值前插入递增值。每个段由下划线字符(_)分隔。
页面的ID
默认值为ClientIDMode
。对象的默认值Predictable
为ClientIDMode
。
检查 this MSDN link 。另外,请查看 this link 了解详情。
答案 2 :(得分:0)
如果在Web配置中设置ClientIdMode = Static,那就更好了。
你甚至可以使用它:
你可以使用jQuery结束选择器:
$( '输入[ID $ = “myServerId”]')
但请记住,这种选择器比使用<%= id.ClientID%>直接选择id慢很多。
http://jsperf.com/id-vs-ends-with
此解决方案来自Gromer: