Jag lyckas inte få renderade sidor att validera som html 4.01 strict har för mej att Oskar Johansson har skrivit en artikel alternativt en forumpost angående just detta här på Pellesoft.. sökte, men hittade inte den just nu.. :( Microsoft in your face, de sätter sina egna standarder ^^ > har för mej att Oskar Johansson har skrivit en artikel alternativt en forumpost angående just detta här på Pellesoft.. sökte, men hittade inte den just nu.. :( Jag har tittat på detta kodexempel och ändrat så det passade med __VIEWSTATE Tillägg: Bakgrund:validerbar html 4.01 strict med asp.net
på: http://validator.w3.org/
Problemet är inledande _ på tex __VIEWSTATE
"value of attribute "ID" invalid: "_" cannot start a name."
Problemet beror på just på hur ramverkets Pageklass med sin htmlformklass genererar sin kod.
En fundering vore att skapa en httpmodul som läser in response / requests och strängmaniulerar om namnet till ex m__VIEWSTATE.
Någon som har något förslag?Sv: validerbar html 4.01 strict med asp.net
Sv: validerbar html 4.01 strict med asp.net
Sv:validerbar html 4.01 strict med asp.net
Jodå, jag har skrivit något sådant, fast sedan är det lite fulhack över det hela, och jag har något litet minne av att det är något som inte stämmer till 100% med koden. Dessutom är den för .NET 1.1 och inte 2.0. Det finns en vb-version också, fast den är helt otestad (vilket jag också skrivit), och den har jag för mig behöver någon ändring någonstans för att fungera. Använd på egen risk :)
[Få input taggarna i en block-tagg för att valideringen ska gilla det! + lite annat]Sv: validerbar html 4.01 strict med asp.net
att den satte ett m framför --> m_VIEWSTATE
bara för att se om det gick
den eg funktionaliteten var i kodexemplet att lägga elementet i en div
<div style="display: none"> ... </div>
och precis som Oskar säger för att lösa problem med xhtml validerbara sidor med 1.1
Problem uppkommer med att värdet måste sättas tillbaka med.
Jag har tittat / klurat på lite olika lösningar
1) Ändra om i koden för page / form själv genom att lyfta på huven till ramverket o titta
tanken var att sno delar av kod som var internal / protected och lyfta in de metoderna till min egen klass och ändra där det behövs och fixa arvskedjan m.h.a VB Shadows.
Problem: Det var en himla massa olika steg o klasser som verkade behövas pillas med då de användes / skyfflade funktionalitet till inneliggande klasser och de klassernas innehliggande kontroller som skulle skriva sin html. Och då väldigt många egenskaper / metoder var internal / Protected så har jag lagt den lösningen på Is.
2) Skriva en HTTPModul som läser in response / request datat och fipplar om __VIEWSTATE --> m__VIEWSTATE och tillbaka
och regga denna i web.config
3) Skippa form runat server iöverhuvudtaget
dvs bara rendera en massa html från repeaters och den formulärskontroll som jag behövde gör jag som ett gammalt "hederligt" <form>
tex
<form name="input" action="search.aspx" method="get">
=============================================
Av dessa lösningar är väl kanske 2:an att föredra.
Kanske jobba ngt med catche:bitar så att man inte behöver strängmanipulera vid varje request
(de ggr som det går)
Av ev intresse för andra som läser detta inlägg så finns det mer problem än bara med __VIEWSTATE; __EVENT... osv
Kör man länkar i header med runat server verkar det inte heller gå att få validerbar html 4.01 Strict
då oavsett
<xhtmlConformance mode="Strict" />
<xhtmlConformance mode="Legacy" />
<xhtmlConformance mode="Transitional" />
så kommer dessa att renderas med avslutande /
dvs
<link rel="stylesheet" type="text/css" ... >
Blir
<link rel="stylesheet" type="text/css" ... />
Återstår bara att
a) skippa head runat server
b) lyfta ut link-delar från ev masterpage / head-del
och stoppa in dem för alla sidor som behöver dem
Så hur gick det då?
http://validator.w3.org/check#
Result: Passed validation
File: default.htm
Encoding: iso-8859-1
Doctype: HTML 4.01 Strict
:)Sv:validerbar html 4.01 strict med asp.net
Resultatet ovan var med lösning 3 "Skippa form runat server iöverhuvudtaget"
Då detta känns som en "cripp:lande" lösning; så om någon läser detta och har gjort en HTTPModule
för att ändra viewstateNamnet fram o tillbaka så är det en slutgiltig lösning på detta problem, och jag kommer då att stänga tråden.SEO & validation html 4.01 strict. Lös Viewstate --> HttpModule; PagePersister;P
(Vad är och hur fungerar Viewstate? = http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx )
Lösningar:
[Httpmodul]
Moving ViewState to the Bottom of the Page
http://www.hanselman.com/blog/MovingViewStateToTheBottomOfThePage.aspx
http://professionalaspnet.com/archive/2006/07/30/Moving-ViewState-to-Optimize-Web-Pages.aspx
Samma ide går även att använda med en PageAdapter istället
[ASP.NET 2.0 Page Persistence]
Cache med session och Enterprise Library 3.0
http://aspadvice.com/blogs/sswafford/archive/2007/04/28/Move-the-ViewState-off-the-client-and-cache-it-on-the-server.aspx
Flytta Viewstate till Session - Mha PageAdapter
http://professionalaspnet.com/archive/2006/12/09/Move-the-ViewState-to-Session-and-eliminate-page-bloat.aspx
http://www.codeguru.com/vb/vb_internet/aspnet/article.php/c13931/
(tidigare nämda skippa form runat="server" )