Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 带有$或非字母数字字符的HTML类和ID_Asp.net_Xhtml_W3c Validation - Fatal编程技术网

Asp.net 带有$或非字母数字字符的HTML类和ID

Asp.net 带有$或非字母数字字符的HTML类和ID,asp.net,xhtml,w3c-validation,Asp.net,Xhtml,W3c Validation,我正在查看XHTML doctype上的一些站点代码,从中我看到的框架是ASP.net。HTML中的ID中有一个“$” 例如: <img id="$ct100templateContent$SectionPanel1$ctl01$ctl02ctl00_templateContent_SectionPanel1_ctl01_ct999img" src="this.jpg"/> 从W3C语义的角度来看,“$”在ID或类中无效。ID和类在XHTML doctype中只能包含字母数字字

我正在查看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命名约定吗

$value表示控件嵌入站点/页面的级别。您还可以将ClientIDMode更改为Static以使用自己的ID。

是的,ASP.NET在基于分层页面布局生成控件ID时使用“$”符号。ASP.NET在类名中不使用“$”符号。

我有点搞不懂您在id中看到美元符号的方式/原因

将Web控件呈现为标记时,ASP.NET会根据Web控件的
id
属性及其在控件层次结构中的位置生成元素的
id
name
属性。简而言之,某些控件(例如模板控件或重复控件)充当命名容器。在确定
ID
name
属性时,此类控件的
ID
属性值将作为其内部控件
ID
属性值的前缀

例如,考虑下面的控制层次结构:

在这里,母版页(
ctl00
)和ContentPlaceHolder(
MainContent
)控件是命名容器。
Age
TextBox Web控件将有一个呈现的
id
clt00\u MainContent\u Age-即,它自己的服务器端
id
属性值,前缀是其命名容器祖先的
id`值

但是请注意,呈现的
id
是如何用下划线分隔每个命名容器点的。这是ASP.NET中的默认功能,因此我不明白为什么在
id
属性中会看到美元符号。(在制定
name
属性时,ASP.NET使用美元符号分隔每个命名容器点,但在制定
id
属性值时不应使用美元。)


您使用的ASP.NET版本是什么?你在做什么。。。奇怪的像使用自定义控件和重写基本
控件
类的
IdSeparator
属性?如果您使用的是ASP.NET 4,您是否(有意或无意)设置了控件的
ClientIDMode
属性?

Go figure,MS将覆盖所有标准。我不确定他们使用的是ASP.NET的哪个版本。根据您对ID是如何形成的解释,我认为ASP.NET开发人员在生成前端代码时犯了一个错误。