aspx控件的渲染ID在源html代码中总是呈现相同的吗?

时间:2013-09-24 07:44:55

标签: c# javascript html asp.net

对于Eg,我有一个带id="txtkms"的aspx文本框 在html视图源中,我可以看到它呈现为ContentPlaceHolder1_Gridview1_txtkms_1 我的问题是..每次在任何浏览器或任何其他计算机上运行我的aspx页面时,此控件txtkms始终呈现为ContentPlaceHolder1_Gridview1_txtkms_1

3 个答案:

答案 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。对象的默认值PredictableClientIDMode

检查 this MSDN link 。另外,请查看 this link 了解详情。

答案 2 :(得分:0)

如果在Web配置中设置ClientIdMode = Static,那就更好了。

你甚至可以使用它:

你可以使用jQuery结束选择器:

$( '输入[ID $ = “myServerId”]')

但请记住,这种选择器比使用<%= id.ClientID%>直接选择id慢很多。

http://jsperf.com/id-vs-ends-with

此解决方案来自Gromer:

What's the best way to deal with ASP.NET's ClientID