[ASP.NET] <head runat="server"> geeft invalid html

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008
  • Reageer

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Gek dat niemand dit nog opgevallen is. Ik heb een pagina waarin een <head runat="server"> staat (op de juiste plek) maar deze poept incorrecte HTML uit. Ik heb er in de aspx een <title>, een <style> en een <script> instaan. Ik gebruik themes, dus ASP.NET wil per se dat de <head> een servertag is, zodat hij er nog een <link> in kan zetten met de stylesheet van de theme.

Maarrrrr, de pagina is HTML4 (daar heb ik een goeie reden voor, dus begin nou niet over XHTML) terwijl ASP.NET XHTML uitpoept. Wat maakt dat uit, zou je zeggen; nou een hele hoop dus. Dit wordt er geproduceerd:
HTML:
1
2
3
4
5
6
7
8
9
10
<head><title>
    Titeltje
</title><meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
  <style type="text/css">
  ...
  </style>
  <script language="javascript" type="text/javascript">
  ...
  </script>
<link href="App_Themes/Default/default.css" type="text/css" rel="stylesheet" /></head>
Lijkt op zich een beetje vreemd. Er zitten bijvoorbeeld opeens newlines in de <title> terwijl dat in de aspx niet zo is. Dat is niet zo'n probleem, maar wel vreemd gedrag, omdat ie er gewoon met z'n fikken af moet blijven.

Veel erger is dat ie <meta /> genereert terwijl in de aspx <meta> staat. DAT is dus wel een probleem, want zo is het invalid HTML. Hetzelfde geldt voor <link /> dat <link> had moeten zijn.

Is er ergens een switch waarmee aan te geven is dat ie HTML4 moet uitpoepen?

[ Voor 12% gewijzigd door _Thanatos_ op 09-06-2006 10:20 ]

日本!🎌


  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Hoe staat je doctype? Ik meen mij te herinneren dat als je de doctype zet naar bijvoorbeeld HTML4 strict het e.e.a. afgedwongen wordt.

Over welke .net praten we? 1, 1.1 of 2.0? Beter nog: welke IDE gebruik je?

Anders, als laatste redmiddel zou je met BrowserCaps aan de slag kunnen gaan.
4of9 schreef op vrijdag 09 juni 2006 @ 11:26:
even dit in je web.config zetten:

code:
1
2
3
<system.web>
  <xhtmlConformance mode="legacy|transitional|strict" />
<system.web>


wel even je doctype etc. aanpassen.
Is die ook compatible met 1.1? Heb er namelijk nog nooit van gehoord.

[ Voor 38% gewijzigd door TeeDee op 09-06-2006 11:29 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
even dit in je web.config zetten:

code:
1
2
3
<system.web>
  <xhtmlConformance mode="legacy|transitional|strict" />
<system.web>


wel even je doctype etc. aanpassen.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Doctype is als volgt:
code:
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
En ja, ik was vergeten te zeggen dat ik ASP.NET 2.0 gebruik icm VS2005.

Ik heb nu in m'n web.config:
XML:
1
2
3
4
5
<location path="index.aspx">
  <system.web>
    <xhtmlConformance mode="Legacy" />
  </system.web>    
</location>
En dat werkt bijna :)
Alleen <link /> wordt nog niet als <link> gerenderd; de stylehseet uit m'n theme, om precies te zijn.

Ik had overigens een tussenoplossing gemaakt door een HtmlTextWriter te inheriten en alle " />" te vervangen door ">" in de Write(string) methode. Maar dat is natuurlijk niet erg generiek :) Alhoewel in die hoek misschien ook iets te zoeken is... helaas exposed het framework vrij weinig van de HtmlTextWriter, zodat ik OnTagRender alvast niet kan gebruiken om ook netjes de attributen van een tag mee te renderen.

[ Voor 30% gewijzigd door _Thanatos_ op 09-06-2006 11:47 ]

日本!🎌


  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

_Thanatos_ schreef op vrijdag 09 juni 2006 @ 11:46:

Ik had overigens een tussenoplossing gemaakt door een HtmlTextWriter te inheriten en alle " />" te vervangen door ">" in de Write(string) methode. Maar dat is natuurlijk niet erg generiek :) Alhoewel in die hoek misschien ook iets te zoeken is... helaas exposed het framework vrij weinig van de HtmlTextWriter, zodat ik OnTagRender alvast niet kan gebruiken om ook netjes de attributen van een tag mee te renderen.
En BrowserCaps als oplossing? Op die manier forceer je het e.e.a. Begin alleen nu te twijfelen of BrowserCaps nog wel functioneerd in 2.0

Heart..pumps blood.Has nothing to do with emotion! Bored


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
BrowserCaps heb ik geen kaas van gegeten, dus ik zou eigenlijk niet goed weten waar/hoe ik dat moet instellen...

日本!🎌


  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

_Thanatos_ schreef op vrijdag 09 juni 2006 @ 12:31:
BrowserCaps heb ik geen kaas van gegeten, dus ik zou eigenlijk niet goed weten waar/hoe ik dat moet instellen...
http://slingfive.com/pages/code/browserCaps/ :Y)
crisp schreef op vrijdag 09 juni 2006 @ 12:44:
[...]

Da's niet volledig hè ;)
En waarom transitional terwijl voor nieuwe document strict de norm is?
Default Visual Studio meuk. In ieder geval voor VS2003. VS2005 wil default naar Xhtml transitional afaik.

[ Voor 37% gewijzigd door TeeDee op 09-06-2006 12:57 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

_Thanatos_ schreef op vrijdag 09 juni 2006 @ 11:46:
Doctype is als volgt:
code:
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Da's niet volledig hè ;)
En waarom transitional terwijl voor nieuwe document strict de norm is?

Intentionally left blank


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
_Thanatos_ schreef op vrijdag 09 juni 2006 @ 11:46:
Doctype is als volgt:
code:
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
En ja, ik was vergeten te zeggen dat ik ASP.NET 2.0 gebruik icm VS2005.

Ik heb nu in m'n web.config:
XML:
1
2
3
4
5
<location path="index.aspx">
  <system.web>
    <xhtmlConformance mode="Legacy" />
  </system.web>    
</location>
En dat werkt bijna :)
Alleen <link /> wordt nog niet als <link> gerenderd; de stylehseet uit m'n theme, om precies te zijn.

Ik had overigens een tussenoplossing gemaakt door een HtmlTextWriter te inheriten en alle " />" te vervangen door ">" in de Write(string) methode. Maar dat is natuurlijk niet erg generiek :) Alhoewel in die hoek misschien ook iets te zoeken is... helaas exposed het framework vrij weinig van de HtmlTextWriter, zodat ik OnTagRender alvast niet kan gebruiken om ook netjes de attributen van een tag mee te renderen.
die <link /> tag staat die in je theme of in je page?
ASP.NET vervangt niet de <br /> en/of andere tags die je zelf in je page hebt gezet. Het zorgt er alleen voor dat alle controls geen xhtml maar html renderen voor zover ik begrepen heb.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
die <link /> staat nergens, die wordt erin gezet doordat er een css file in m'n theme-directory staat. Dat is goed, maar voor HTML4 moet het <link> zijn...
Da's niet volledig hè ;)
En waarom transitional terwijl voor nieuwe document strict de norm is?
Omdat dat wat ik wil bereiken alleen goed werkt in 4.01 Transitional. Als ik em op Strict zet, gaat de W3C validator zeuren dat er geen doctype is, terwijl ie em in de source listing weer wel laat zien.

Enne, hoezo niet volledig? De validator vindt em goed zo.

[ Voor 58% gewijzigd door _Thanatos_ op 09-06-2006 14:35 ]

日本!🎌


  • -Lars-
  • Registratie: Mei 2004
  • Niet online
HTML:
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


Dat moet 'm zijn ;) (zie W3C)

[ Voor 33% gewijzigd door -Lars- op 09-06-2006 14:51 . Reden: Even wat netter ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

_Thanatos_ schreef op vrijdag 09 juni 2006 @ 14:33:
Omdat dat wat ik wil bereiken alleen goed werkt in 4.01 Transitional. Als ik em op Strict zet, gaat de W3C validator zeuren dat er geen doctype is, terwijl ie em in de source listing weer wel laat zien.
staat de doctype wel op de eerste regel?

  • Plopeye
  • Registratie: Maart 2002
  • Laatst online: 12-12-2025
Zet even je default target scheme goed in visual studio...

zie plaatje...

Afbeeldingslocatie: http://www.tepperweb.nl/htmlsmall.jpg

Unix is user friendly, it's only selective about his friends.....


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Hebben we het nou over hoe de doctype moet staan, of over hoe je de gegenereerde code goed krijgt? Als ik de pagina valideer, zegt W3C dat het HTML 4.01 Transitional is. Fine with me.

En plopeye, volgens mij maakt dat niets uit. Dat is alleen voor validatie in de source editor, toch?

[ Voor 19% gewijzigd door _Thanatos_ op 11-06-2006 20:05 ]

日本!🎌


  • -Lars-
  • Registratie: Mei 2004
  • Niet online
Ik reageerde op jouw reactie op crisp ("Enne, hoezo niet volledig? De validator vindt em goed zo."). De doctypedeclaratie is pas volledig als die URL erbij staat (zoals in mijn reactie). Dat de validator van het W3C dat weinig uitmaakt bij Transitional, is niet van belang.
_Thanatos_ schreef op vrijdag 09 juni 2006 @ 14:33:
[...]
Omdat dat wat ik wil bereiken alleen goed werkt in 4.01 Transitional. Als ik em op Strict zet, gaat de W3C validator zeuren dat er geen doctype is, terwijl ie em in de source listing weer wel laat zien.
Wellicht vindt de validator het wel van belang bij Strict, vandaar dat hij dan wel gaat zeuren.

Verder heb ik geen verstand van ASP.NET of ASP in het algemeen. Echter, uitgaande van wat ik lees op 456Bereastreet en hierzo, meen ik dat ASP gewoon borked up is qua (X)HTML-validatie. Ik zou inderdaad gaan zoeken in de richting van search & replace. Maar goed, ik heb geen verstand van ASP :+

  • Plopeye
  • Registratie: Maart 2002
  • Laatst online: 12-12-2025
_Thanatos_ schreef op zondag 11 juni 2006 @ 20:04:
Hebben we het nou over hoe de doctype moet staan, of over hoe je de gegenereerde code goed krijgt? Als ik de pagina valideer, zegt W3C dat het HTML 4.01 Transitional is. Fine with me.

En plopeye, volgens mij maakt dat niets uit. Dat is alleen voor validatie in de source editor, toch?
Nee dat is niet helemaal waar zoals je kan zien staat de doctype dan ook op XHTML de problemen die je dan hebt is dat er dan elementen van de XHTML standaard worden gebruikt... zet je dit op HTML 4.01 dan zal visual studio dit niet doen.
Tevens staat dan de doctype ook direct goed...

Unix is user friendly, it's only selective about his friends.....


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Maar waarom verandert de validatie-mode dan niet terug naar XHTML als ik een XHTML-document open? Maargoed, even so, als ik validatie op HTML4 zet, dan komt er nog steeds een <link /> ipv een <link>.

[ Voor 6% gewijzigd door _Thanatos_ op 13-06-2006 15:07 ]

日本!🎌


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Klein vraagje... gaat ASP.NET altijd aan je HTML-code sleutelen? Ik dacht dat het een programmeertaal/omgeving was, geen HTML editor/changer/whatever...
Lijkt mij namelijk niet zo heel geschikt.
Is er geen mogelijkheid om te zeggen dat je wil dat ASP.NET van je HTML code afblijft, behalve dan de dingen die je zelf programmeert?

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
MUBA, je bent wrs een ASP.NET beginner, dus laat ik het maar even uitleggen, en daarna gaan we weer ontopic. ASP.NET is geen taal, is het is web-platform wat in .NET zit. Je kunt ertegenaan programmeren met C# of een andere CLS-taal. Het is ook geen HTML-editor, dat doet VS.NET voor je. Verder sleutelt hij niet aan de HTML-code, maar voor themes moet hij wel, omdat er (o.a.) een stylesheet in de <head> sectie gezet moet worden. Maar tags die geen runat="server" hebben, blijft ie wel vanaf.

Nu weer ontopic. Iemand al een ideetje opgedaan over die <link /> ? :)

日本!🎌


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:52

gorgi_19

Kruimeltjes zijn weer op :9

_Thanatos_ schreef op vrijdag 09 juni 2006 @ 11:46:
Ik had overigens een tussenoplossing gemaakt door een HtmlTextWriter te inheriten en alle " />" te vervangen door ">" in de Write(string) methode. Maar dat is natuurlijk niet erg generiek :) Alhoewel in die hoek misschien ook iets te zoeken is... helaas exposed het framework vrij weinig van de HtmlTextWriter, zodat ik OnTagRender alvast niet kan gebruiken om ook netjes de attributen van een tag mee te renderen.
Hoezo is dit trouwens niet generiek? Dump deze in een HttpModule / Global.asax en je hebt hem toch generiek? ;) Netjes: nee. Generiek: ja :P
_Thanatos_ schreef op dinsdag 13 juni 2006 @ 19:53:
Nu weer ontopic. Iemand al een ideetje opgedaan over die <link /> ? :)
Als het echt te lang duurt kan je als tussenoplossing kijken naar een custom class, welke een literal inherit :) Afhankelijk van je applicatie kan je wellicht zelfs een literal gebruiken. :)

[ Voor 24% gewijzigd door gorgi_19 op 13-06-2006 19:59 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1