2011-01-03 5 views
0

Ich bin auf einige Site-Code auf einem XHTML-Doctype und von was ich sehe das Framework ist ASP.net. Die IDs im HTML haben ein "$" drin.

Zum Beispiel:

<img id="$ct100templateContent$SectionPanel1$ctl01$ctl02ctl00_templateContent_SectionPanel1_ctl01_ct999img" src="this.jpg"/> 

Aus W3C Semantic Sicht des "$" ist in einer ID oder Klasse nicht gültig. IDs und Klassen dürfen nur alphanumerische Zeichen in einem XHTML-Doctype enthalten.

Ist das "$" eine ASP.net-Namenskonvention, die auf ein Websteuerelement oder Vorlagenelement verweist?

+2

Go Figur, MS würde alle über die Standards wee. –

Antwort

1

Ich bin ein wenig verwirrt wie/warum Sie Dollarzeichen in der ID sehen.

Wenn eine Web-Steuerung in Markup-Rendering erzeugt ASP.NET, die auf der Eigenschaft der ID Web Steuerung basierend id und name Attribute des Elements und seine Lage in der Steuerungshierarchie. Kurz gesagt, bestimmte Steuerelemente - wie Vorlagensteuerelemente oder Wiederholungssteuerelemente - fungieren als Benennungscontainer. Die Eigenschaftswerte dieser Steuerelemente 'ID werden den Eigenschaftswerten ihrer inneren Steuerelemente' ID vorangestellt, wenn die Attribute id und name bestimmt werden.

Betrachten wir zum Beispiel die folgende Steuerungshierarchie:

Sample ASP.NET control hierarchy.

Hier die Master-Seite (ctl00) und Content (MainContent) Kontrollen Benennung Container. Das TextBox-Websteuerelement Age verfügt über die ID id der clt00_MainContent_Age - namely, its own server-side ID property value prefixed with the ID-Werte seiner Benennungscontainer-Vorfahren.

Aber beachten Sie, wie der gerenderte id jeden Namensbehälter Spot mit einem Unterstrich trennt. Dies ist die Standardfunktionalität von ASP.NET. Daher bin ich ratlos, warum Sie im Attribut id Dollarzeichen sehen. (Beim Formatieren des Attributs name trennt ASP.NET die einzelnen Benennungsplätze mit einem Dollarzeichen, aber bei der Formulierung des id Attributwerts sollte $ nicht verwendet werden.)

Welche Version von ASP.NET verwenden Sie? Machst du irgendetwas ... seltsam? Wie die Verwendung von benutzerdefinierten Steuerelementen und Überschreiben der Basis Control Klasse IdSeparator Eigenschaft? Wenn Sie ASP.NET 4 verwenden, setzen Sie (entweder absichtlich oder unabsichtlich) die Eigenschaft ClientIDMode des Steuerelements?

+0

Ich bin nicht sicher, welche Version von ASP.NET sie verwenden. Von Ihrer Erklärung, wie IDs formuliert werden, denke ich, dass der ASP.NET-Entwickler einen Fehler bei der Generierung des Front-End-Codes gemacht hat. – ectype

0

Der Wert $ steht für die Ebene, in der das Steuerelement in Ihre Site/Seite eingebettet ist. Sie können ClientIDMode auch in Static ändern, um Ihre eigenen IDs zu verwenden.

0

Ja, ASP.NET verwendet das '$' Symbol, wenn es die IDs der Steuerelemente basierend auf dem hierarchischen Seitenlayout generiert. ASP.NET verwendet das $ -Symbol in Klassennamen nicht.

Verwandte Themen