Asp.NET ile W3C Validator (XHTML 1.0 Strict sorunu)

by Uğur Çelenk 26. Kasım 2008 08:53

Sayfamızın html çıktısının W3C standartlarına uygun olup olmadığını burdan kontrol ediyoruz -->  http://validator.w3.org/

Asp.NET ile yapılan sitelerin birçoğu document type(DOCTYPE) olarak XHTML 1.0 Transitional kullanıyor. Oysa ki bu alanda uzman kişilerin önerisi XHTML 1.0 Strict oluyor. XHTML 1.0 Strict kullanarak yaptığım sayfayı W3C validator ile kontrol ettiğimde 2 hata verdi ve bu 2 hatanın suçlusu bu sefer biz değiliz, araştırmalarım sonucu bunun bir bug olduğunu farkettim ama bu hatanın üstesinden nasıl gelinebiliniyor, aşağıda bahsedeceğim.. 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


W3C validator ile kontrol ettiğimizde verdiği hatalar şunlar :
1. <form name="aspnetForm" method="post" action="default.aspx" id="aspnetForm">...

2. document type does not allow ... <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="asdasdasdwerwerwesdsa3432..../" >   

İlk hatanın nedeni render anında form elementine otomatik olarak name özelliği katmasından kaynaklanıyor ve işin ilginç yanı bu name özelliğini internet explorerda sayfanızın html çıktısına baktığınızda göremiyorsunuz ama W3C ile kontrol ederken sayfanın kaynağını gösteri işaretlerseniz, W3C sizin sayfanızı render ettiğinde form elementine name özelliğini de eklediğini göreceksiniz, uzun uğraşlar sonucu bu ilginç olayı farkedebildim..

İkinci hata ise yine sayfanın render esnasında üretilen base64 ile şifrelenmiş viewstate için bir input oluşturması ve sonucunda hata vermesi..


Peki XHTML 1.0 Strict kullanarak nasıl W3C valid bir sayfa elde edebiliriz?

İlk denediğim yöntem formun render anına erişip, name özelliğini atamamasını sağlamak oldu ve başarılı da oldum, W3Cde ki hatalar 1e indi ama bu seferde sayfamda asp.net ajax kullandığımdan ajax kullandığım yerler çalışmadı, ajaxın çalışabilmesi name özelliğine bağlıymış.! Neyse bu yöntemden vazgeçip başka çareler aradım ve sonucu buldum.

- Öncelikle web.config dosyasında bir tanımlama yapmak gerekiyor.
  <system.web> düğümünün hemen altına aşağıdaki satırı yerleştirin.

   <xhtmlConformance mode="Strict" />

-
Proje dosyanızın içinde App_Browsers adında bir klasör oluşturun (Bu dosya ismi özel bir isimdir, başka bir isim kullanmayınız). Bu klasörün içine W3C.browser adında dosya ekleyiniz.
Bu dosyanın içine aşağıdaki kodları yerleştirin.

<browsers>
<browser id="W3C_Validator" parentID="default">
<
identification>
<
userAgent match="^W3C_Validator" />
</
identification>
<
capabilities> <capability name="browser" value="W3C Validator" />
<
capability name="ecmaScriptVersion" value="1.2" />
<
capability name="javascript" value="true" />
<
capability name="supportsCss" value="true" />
<
capability name="tables" value="true" />
<
capability name="tagWriter" value="System.Web.UI.HtmlTextWriter" />
<
capability name="w3cdomversion" value="1.0" />
</
capabilities>
</
browser>

</browsers>


Yukarıdaki adımları uyguladıktan sonra artık W3C validator ile tekrar test edebilirsiniz, sayfanızda eğer başka bir hata yapmadıysanız W3C kontrolünden başarıyla geçmiş olacaksınız..

w3c

Yorum ekle




biuquote
  • Yorum
  • Canlı önizleme
Loading



Etiket Bulutu