Sicherstellung der Xhtml-Konformität in ASP 1.1
Out of the Box ASP generiert HTML überprüft nicht allzu gut gegen XHTML 1.0
Out of the Box ASP generiert HTML nicht allzu gut gegen XHTML 1.0 validiert. Wann verwendet man < bilden Runat = 'Server' / >, die generierten HTML-Code wird ein Name-Attribut im Form-Tag hinzufügen. Dies ist eine ungültige XHTML. Das versteckte Feld mit dem Namen __VIEWSTATE Bedürfnisse in < Div >-Tag eingeschlossen werden. Und clientseitige Skriptblöcke sollten mit Typ = 'Text/Javascript' anstatt Sprache = 'Javascript'. Ich habe eine Klasse (Code unten) gebaut, die reguläre Ausdrücke verwendet, um den erforderlichen HTML-Code XHTML-konform sein zu bereinigen.
< Skript Runat = 'Server' > protectedoverridevoid Render (HtmlTextWriter Schriftsteller) { StringBuilder StringBuilder = new StringBuilder(); StringWriter StringWriter = neue StringWriter(stringBuilder); HtmlTextWriter HtmlWriter = neue HtmlTextWriter(stringWriter); Base. Render(htmlWriter); html String = stringBuilder.ToString(); Schriftsteller. Write(Components.XHTML.CleanStream(HTML)); } < / script > |
Und hier ist der Code für die Klasse. Du musst es zu kompilieren.
using System.Text.RegularExpressions; Namespace Komponenten { XHTML] public sealed class { öffentliche statische Zeichenfolge CleanStream(string s) { Regex-R; R = neue Regex ('< Form (name=\'([^\']+)\')',RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(FormMatch)); R = neue Regex('script\\s+(language=\'javascript\')',RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(ScriptAttributeMatch)); R = neue Regex ('< input.*? () Language=\'javascript\')',RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(InputScriptAttributeMatch)); R = neue Regex ('< Input\\s + Typ \'Hidden\'\\s+name=\'__VIEWSTATE\'\\s+value=\'([^\']+) = \'\\s + / > ' RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(ViewstateMatch)); s zurück; } privatestaticstring ViewstateMatch(Match m) { Return '< Div >' + m.ToString() + '< / Div >'; } privatestaticstring ScriptAttributeMatch(Match m) { m.ToString() zurück. Ersetzen Sie (m.Groups [1]. ToString(),'type=\'text/javascript\''); } privatestaticstring InputScriptAttributeMatch(Match m) { m.ToString() zurück. Ersetzen Sie (m.Groups [1]. ToString(),''); } privatestaticstring FormMatch(Match m) { m.ToString() zurück. Ersetzen Sie (m.Groups [1]. ToString(),''); } } }
|
Diese Methode möglicherweise nicht die beste in der Welt. Aber es funktioniert für mich auf meinen Seiten mit wenig Verkehr.
Sicherstellung der Xhtml-Konformität in ASP 1.1
Sicherstellung der Xhtml-Konformität in ASP 1.1 : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Out of the Box ASP generiert HTML überprüft nicht allzu gut gegen XHTML 1.0
Out of the Box ASP generiert HTML nicht allzu gut gegen XHTML 1.0 validiert. Wann verwendet man < bilden Runat = 'Server' / >, die generierten HTML-Code wird ein Name-Attribut im Form-Tag hinzufügen. Dies ist eine ungültige XHTML. Das versteckte Feld mit dem Namen __VIEWSTATE Bedürfnisse in < Div >-Tag eingeschlossen werden. Und clientseitige Skriptblöcke sollten mit Typ = 'Text/Javascript' anstatt Sprache = 'Javascript'. Ich habe eine Klasse (Code unten) gebaut, die reguläre Ausdrücke verwendet, um den erforderlichen HTML-Code XHTML-konform sein zu bereinigen.
< Skript Runat = 'Server' > protectedoverridevoid Render (HtmlTextWriter Schriftsteller) { StringBuilder StringBuilder = new StringBuilder(); StringWriter StringWriter = neue StringWriter(stringBuilder); HtmlTextWriter HtmlWriter = neue HtmlTextWriter(stringWriter); Base. Render(htmlWriter); html String = stringBuilder.ToString(); Schriftsteller. Write(Components.XHTML.CleanStream(HTML)); } < / script > |
Und hier ist der Code für die Klasse. Du musst es zu kompilieren.
using System.Text.RegularExpressions; Namespace Komponenten { XHTML] public sealed class { öffentliche statische Zeichenfolge CleanStream(string s) { Regex-R; R = neue Regex ('< Form (name=\'([^\']+)\')',RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(FormMatch)); R = neue Regex('script\\s+(language=\'javascript\')',RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(ScriptAttributeMatch)); R = neue Regex ('< input.*? () Language=\'javascript\')',RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(InputScriptAttributeMatch)); R = neue Regex ('< Input\\s + Typ \'Hidden\'\\s+name=\'__VIEWSTATE\'\\s+value=\'([^\']+) = \'\\s + / > ' RegexOptions.IgnoreCase); s = r.Replace (s, neue MatchEvaluator(ViewstateMatch)); s zurück; } privatestaticstring ViewstateMatch(Match m) { Return '< Div >' + m.ToString() + '< / Div >'; } privatestaticstring ScriptAttributeMatch(Match m) { m.ToString() zurück. Ersetzen Sie (m.Groups [1]. ToString(),'type=\'text/javascript\''); } privatestaticstring InputScriptAttributeMatch(Match m) { m.ToString() zurück. Ersetzen Sie (m.Groups [1]. ToString(),''); } privatestaticstring FormMatch(Match m) { m.ToString() zurück. Ersetzen Sie (m.Groups [1]. ToString(),''); } } }
|
Diese Methode möglicherweise nicht die beste in der Welt. Aber es funktioniert für mich auf meinen Seiten mit wenig Verkehr.
Sicherstellung der Xhtml-Konformität in ASP 1.1
By Wiezutun
Sicherstellung der Xhtml-Konformität in ASP 1.1 : Mehreren tausend Tipps, um Ihr Leben einfacher machen.