0

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

4

3 回答 3

2

我从未见过它发生变化,但是将 ClientID 传递给您将使用它的 javascript 会更安全...

于 2013-09-24T07:46:17.537 回答
1

为控件生成的 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 链接。另外,请查看此链接以获取更多详细信息。

于 2013-09-24T08:04:11.557 回答
0

如果您在 Web 配置中设置 ClientIdMode=Static 会更好。

你甚至可以使用这个:

您可以使用带有选择器的 jQuery 结尾:

$('输入[id$="myServerId"]')

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

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

这个解决方案来自 Gromer:

处理 ASP.NET 的 ClientID 的最佳方法是什么

于 2013-09-24T08:44:02.767 回答