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