Scott on Writing

Musings on technical writing...

Adaptive Rendering

After yesterday's post on Panel Weirdness some questions from Milan Negovan prompted me to write an article on how ASP.NET employes adaptive rendering.  The HTML markup emitted from a Web control depends on the browser requesting the page. 

Behind the scenes, the Page class creates an HtmlTextWriter instance based on the Browser object's TagWriter property.  By default, the TagWriter property refers to HtmlTextWriter, which emits HTML 4.0-compliant HTML markup.  For non-Microsoft browsers, the Html32TextWriter class is used instead, which emits HTML 3.2-compliant HTML.  All of this information, thankfully, is configurable through the <browserCaps> section.

One issue that configuring the <browserCaps> section doesn't address is the validation controls and their client-side validation scripts.  This, really, is another can of worms, as the System.Web.UI.WebControls.BaseValidator class annoyingly uses document.all to reference the client-side validator controls.  (document.all is not supported in non-Microsoft browsers.)  The short of it is that you have to create your own set of validation controls, such as Paul Glavich's DomValidators, which starts from scratch with the creation of a BaseValidator class that uses document.getElementById() instead.

Read the article, A Look at ASP.NET's Adaptive Rendering

posted on Thursday, April 29, 2004 12:19 PM

Feedback

# re: Adaptive Rendering 4/29/2004 12:44 PM AndrewSeven

Downlevel browsers perform validation on postback only ;)

# re: Adaptive Rendering 4/29/2004 12:50 PM Milan Negovan

Wow! That was fast! Thank you for clarifying this whole subject, Scott.

# re: Adaptive Rendering 4/29/2004 1:39 PM Scott Mitchell

Andrew, you can create your own custom validation controls from a custom BaseValidator class and get validation on DOM-compliant browsers. Check out Paul Galvich's DomValidators (link in blog entry).

# re: Adaptive Rendering 6/2/2004 5:24 AM Craig Dunn

Paul Glavich's DomValidators have been around a while, as far as I can tell (2002?) but <i>very</i> similar code (ie. close to identical) now appears on MSDN <a href="http://msdn.microsoft.com/library/en-us/cpguide/html/cpconvalidatorcontrolsamples.asp?frame=true">as 'sample' code for building Custom Validators</a>...
The <a href="http://msdn.microsoft.com/library/en-us/cpguide/html/cpconsamplepagecodebehindfile.asp">test page</a> offered on MSDN works verbatim with Paul's stuff.
Has MS just repurposed them? It's certainly way more detailed sample code that we're used to finding on MSDN (I think they may have tidied up the jscript a bit...).

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

Add To Your Reader

My Links

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<May 2008>
SMTWTFS
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

Comment Stats

DayTotal% of Total
Sunday 1866.8%
Monday 37913.9%
Tuesday 45316.7%
Wednesday 50418.5%
Thursday 53519.7%
Friday 49418.2%
Saturday 1666.1%
Total 2717100.0%

Hour1Total% of Total
12:00 AM 652.4%
1:00 AM 682.5%
2:00 AM 622.3%
3:00 AM 742.7%
4:00 AM 572.1%
5:00 AM 1033.8%
6:00 AM 1084.0%
7:00 AM 1585.8%
8:00 AM 1716.3%
9:00 AM 1475.4%
10:00 AM 1716.3%
11:00 AM 1816.7%
12:00 PM 1886.9%
1:00 PM 1696.2%
2:00 PM 1605.9%
3:00 PM 1324.9%
4:00 PM 1073.9%
5:00 PM 923.4%
6:00 PM 913.3%
7:00 PM 963.5%
8:00 PM 833.1%
9:00 PM 782.9%
10:00 PM 792.9%
11:00 PM 772.8%
Total 2717100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 5.54144
Monday 5.22339
Tuesday 4.28419
Wednesday 7.67637
Thursday 6.90607
Friday 5.48411
Saturday 5.33160
Total 5.842717

Hour1 Entry MadeAvg.Total
12:00 AM 5.0035
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 7.0035
8:00 AM 5.35107
9:00 AM 6.32278
10:00 AM 6.47246
11:00 AM 4.41181
12:00 PM 6.88330
1:00 PM 3.00111
2:00 PM 5.41222
3:00 PM 8.64285
4:00 PM 4.0589
5:00 PM 5.92154
6:00 PM 4.52113
7:00 PM 9.67174
8:00 PM 9.80147
9:00 PM 5.05111
10:00 PM 5.4265
11:00 PM 4.5732
Total 5.842717

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles