我正在查看XHTML doctype上的一些站点代码,从我看到的框架是ASP.net。 HTML中的ID在那里有一个“$”。
例如:
<img id="$ct100templateContent$SectionPanel1$ctl01$ctl02ctl00_templateContent_SectionPanel1_ctl01_ct999img" src="this.jpg"/>
从W3C语义的角度来看,“$”在ID或类中无效。 ID和类只能包含XHTML doctype中的字母数字字符。
“$”是一个引用Web控件或模板项的ASP.net命名约定吗?
答案 0 :(得分:1)
我有点困惑如何/为什么你会在 id 中看到美元符号。
将Web控件呈现为标记时,ASP.NET会根据Web控件的id
属性及其在控件层次结构中的位置生成元素的name
和ID
属性。简而言之,某些控件(如模板控件或重复控件)充当命名容器。在确定ID
和ID
属性时,此类控件的“id
属性值会以其内部控件的name
属性值为前缀。
例如,请考虑以下控制层次结构:
此处,母版页(ctl00
)和ContentPlaceHolder(MainContent
)控件是命名容器。 Age
TextBox Web控件将为其命名容器祖先提供id
clt00_MainContent_Age - namely, its own server-side
个ID property value prefixed with the
ID`值。
但请注意呈现的id
如何将每个命名容器点与下划线分开。这是ASP.NET中的默认功能,所以我很困惑为什么你看到了id
属性中的美元符号。 (在制定name
属性时,ASP.NET会使用美元符号分隔每个命名容器点,但在制定id
属性值时不应使用$。)
您使用的是哪个版本的ASP.NET?你在做什么......很奇怪?就像使用自定义控件并覆盖基类Control
类的IdSeparator
属性一样?如果您使用的是ASP.NET 4,是否设置(有意或无意)控件的ClientIDMode
属性?
答案 1 :(得分:0)
$ value代表控件嵌入您网站/页面的级别。您还可以将ClientIDMode更改为Static以使用您自己的ID。
答案 2 :(得分:0)
是的,ASP.NET在根据分层页面布局生成控件的ID时使用'$'符号。 ASP.NET不在类名中使用'$'符号。