AAddaappttiivvee RReennddeerriinngg 
-- 
CCssss FFrriieennddllyy AAddaapptteerrss
DDootttt.. IInngg.. GGiioorrggeettttii AAlleessssaannddrroo 
alessandro.giorgetti@GruppoSID.com 
www.GruppoSID.com www.dotnetmarche.org
RReennddeerriinngg AAddaattttaattiivvoo 
IIll ccoonncceettttoo ddii rreennddeerriinngg aaddaattttiivvoo ((oo ppiiùù iinn ggeenneerraallee ddii AAddaappttiivvee CCoonnttrrooll 
BBeehhaavviioouurr)) nnaassccee oorriiggiinnaarriiaammeennttee ccoommee mmeezzzzoo ppeerr rraaggggiiuunnggeerree uunnaa mmaaggggiioorree 
eeffffiicciieennzzaa ee fflleessssiibbiilliittàà nneelllloo ssvviilluuppppoo ddii ccooddiiccee ((iinn aapppplliiccaattiivvii wweebb iinn ggeenneerraallee)) 
qquuaannddoo ssii ttrraattttaa ddii rraapppprreesseennttaarree iill ccoonntteennuuttoo ddeellllaa sstteessssaa ppaaggiinnaa ssuu ddiissppoossiittiivvii 
ddiiffffeerreennttii.. 
TTiippiiccoo èè iill ccaassoo ddii ppaallmmaarrii ee tteelleeffoonniinnii iinn ggrraaddoo ddii aacccceeddeerree aadd iinntteerrnneett,, eessssii nnoonn 
ssoonnoo iinn ggrraaddoo ddii rreennddeerriizzzzaarree uunn ppaaggiinnaa wweebb iinn HHTTMMLL ssttaannddaarrdd,, mmaa nneecceessssiittaannoo 
ddii uunn pprroopprriioo ddiiaalleettttoo.. 
DDuuee ssoonnoo llee ssttrraaddee ddaa sseegguuiirree iinn qquueessttoo ccaassoo:: 
11- RRiissccrriivveerree ccoommpplleettaammeennttee ll’’iinntteerrffaacccciiaa uutteennttee ee rreeaalliizzzzaarrnnee uunnaa vveerrssiioonnee ppeerr 
ooggnnii ddiissppoossiittiivvoo ((uuttiilliizzzzaannddoo vveerrssiioonnii ddeeddiiccaattee ddeeii ccoonnttrroollllii)).. 
22- AAddaattttaarree ll’’iinntteerrffaacccciiaa aall ddeevviiccee llaasscciiaannddoo aaii ssiinnggoollii ccoonnttrroollllii ll’’iinnccoommbbeennzzaa ddii 
vvaarriiaarree llaa vviissuuaalliizzzzaazziioonnee iinn bbaassee aall ddeevviiccee sstteessssoo..
GGeenneerraalliizzzzaazziioonnee 
Se poi si considerano come ddeevviiccee ddiissttiinnttii,, oollttrree aallllaa 
mmoollttiittuuddiinnee ddii ssiisstteemmii ooppeerraattiivvii,, aanncchhee ii ddiivveerrssii bbrroowwsseerr 
cchhee eessiissttoonnoo ssuull mmeerrccaattoo ppeerr uunnaa sstteessssaa ppiiaattttaaffoorrmmaa 
((ooggnnuunnoo ccoonn llee pprroopprriiee ppeeccuulliiaarriittàà)),, ssii ccoommpprreennddee ccoommee 
llaa tteeccnnoollooggiiaa ddeell rreennddeerriinngg aaddaattttaattiivvoo ppoossssaa ddii ffaattttoo 
aaiiuuttaarree mmoollttiissssiimmoo.. 
IIll bbrroowwsseerr ppuuòò iinnffaattttii eesssseerree ccoorrrreettttaammeennttee iiddeennttiiffiiccaattoo 
mmeeddiiaannttee lloo UUsseerrAAggeenntt ddeellllaa rriicchhiieessttaa eedd iill ccoonnttrroolllloo 
ppuuòò vvaarriiaarree llaa pprroopprriiaa rraapppprreesseennttaazziioonnee ddii ccoonnsseegguueennzzaa..
AAddaappttiivvee CCoonnttrrooll BBeehhaavviioouurr 
IIll ccoonncceettttoo ddii aaddaattttaattoorree ((aaddaapptteerr)) ppuuòò eesssseerr uulltteerriioorrmmeennttee 
ggeenneerraalliizzzzaattoo,, iinn ..NNEETT ssii ppaarrllaa ddii AAddaappttiivvee CCoonnttrrooll 
BBeehhaavviioouurr:: mmoollttii ddeeii ppuunnttii ccrriittiiccii nneell cciicclloo ddii vviittaa ddii uunnaa 
eennttiittàà ((ssiiaa eessssoo uunn ccoonnttrroolllloo oo ll’’iinntteerraa ppaaggiinnaa)) ppoossssoonnoo 
eesssseerree iinntteerrcceettttaattii ee ssoossttiittuuiittii ddaaii ccoorrrriissppoonnddeennttii mmeettooddii 
ddii uunn aaddaapptteerr.. 
EE’’ ppoossssiibbiillee iinnffaattttii iinntteerrcceettttaarree eedd aaddaattttaarree aallttrrii 
ccoommppoorrttaammeennttii ssttaannddaarrdd ddeeii ccoonnttrroollllii ccoommee aadd eesseemmppiioo:: 
iill ccaacchhiinngg,, llaa ggeessttiioonnee ddeell vviieeww-ssttaattee oo llaa pprroocceessssaazziioonnee 
ddeeii ddaattii ddii ppoosstt-bbaacckk..
LLaa NNeecceessssiittàà 
 GGllii aattttuuaallii rreeqquuiissiittii ddii ddeessiiggnn ppeerr uunn ssiittoo wweebb iimmppoonnggoonnoo uunn 
mmaaggggiioorree rriissppeettttoo ddeellllaa ssiinnttaassssii,, ddeellllee rreeggoollee ee ddeeggllii sscchheemmii 
aassssoocciiaattii aaii lliinngguuaaggggii HHTTMMLL ee XXHHTTMMLL.. 
 IIll bbuuoonn sseennssoo iinnoollttrree ddoovvrreebbbbee ssppiinnggeerree aa nnoonn uuttiilliizzzzaarree iinn mmooddoo 
ssccoorrrreettttoo ii ddiiffffeerreennttii ttaagg ddeell lliinngguuaaggggiioo ((iill ttaagg <<ttaabbllee>> ddeevvee eesssseerree 
uussaattoo ppeerr rraapppprreesseennttaarree ddaattii ttaabbuullaattii,, nnoonn iimmppoossttaarree uunn llaayyoouutt)).. 
 IInnoollttrree llee nnoorrmmaattiivvee iimmppoonnggoonnoo uulltteerriioorrii lliimmiittii:: llaa lleeggggee SSttaannccaa 
((iinn IIttaalliiaa)) eedd aallttrree nnoorrmmaattiivvee eeuurrooppeeee ee mmoonnddiiaallii ddeeffiinniissccoonnoo llee 
ccaarraatttteerriissttiicchhee tteeccnniicchhee ((ee nnoonn ssoolloo)) mmiinniimmee cchhee uunn ssiittoo ddeevvee 
aavveerree ppeerr rriissppeettttaarree ddeeggllii ssttaannddaarrdd ddii aacccceessssiibbiilliittàà eedd eesssseerree qquuiinnddii 
ffrruuiibbiillee ddaa ttuuttttii iinn mmooddoo ccoonnssoonnoo..
Quando iill FFrraammeewwoorrkk ‘‘rreemmaa ccoonnttrroo’’ 
TTrraa ii pprriinncciippaallii pprroobblleemmii//ddiiffffiiccoollttàà ddaa aaffffrroonnttaarree nneellllaa ccoossttrruuzziioonnee 
ddii uunn ssiittoo cchhee rriissppeettttii ii nnuuoovvii ssttaannddaarrdd:: 
11- LLaayyoouutt ee ffoorrmmaattttaazziioonnee ccssss-bbaasseedd ((eevviittaannddoo ggllii ssttiillii iinnlliinnee iill ppiiùù 
ppoossssiibbiillee,, iiddeeaallmmeennttee nnoonn ccee nnee ddoovvrreebbbbeerroo eesssseerree)).. 
22- AAbbuussoo ddeeii ttaagg ((eexx:: <<ttaabbllee>> nneellllaa ddeeffiinniizziioonnee ddeell llaayyoouutt ddii uunnaa 
ppaaggiinnaa)).. 
33- UUttiilliizzzzoo ddii aattttrriibbuuttii ee ttaagg ccoonnssiiddeerraattii oobbssoolleettii.. 
II ccoonnttrroollllii ssttaannddaarrdd ddii AASSPP..NNEETT 11..xx ee 22..00 ccoommmmeettttoonnoo eennttrraammbbii 
qquueessttii eerrrroorrii..
CCoommee rriissoollvvoo iill pprroobblleemmaa?? 
..NNEETT 11..xx 
NNoonn ssii hhaa mmoollttaa sscceellttaa:: ppeerr vvaarriiaarree iill rreennddeerriinngg ssttaannddaarrdd 
ddeell ccoonnttrroolllloo ssii ddeevvee eerreeddiittaarree llaa ccllaassssee bbaassee ddeell 
ccoonnttrroolllloo ee rriissccrriivveerree llee ffuunnzziioonnii ddii rreennddeerriinngg.. CCii ssii 
ssccoonnttrraa iinn qquueessttoo ccaassoo ccoonn llaa ssccaarrssiittàà ddii 
ddooccuummeennttaazziioonnee ffoorrnniittaa ssuullll’’iimmpplleemmeennttaazziioonnee iinntteerrnnaa 
ddeeii ccoonnttrroollllii.. 
SSuuppppoorrttoo lliimmiittaattoo ppeerr AAddaappttiivvee RReennddeerriinngg 
..NNEETT 22..00 
AAddaappttiivvee RReennddeerriinngg,, ssuuppppoorrttoo eesstteessoo..
CCoonnttrrooll AAddaapptteerr 
UUnn AAddaapptteerr èè uunnaa ccllaassssee//ooggggeettttoo aa ccuuii vveennggoonnoo 
ddeelleeggaattee ddeetteerrmmiinnaattee ffuunnzziioonnii eessppoossttee ddaa uunn ccoonnttrroolllloo 
bbaassee ((ssiiaannoo eessssee rreellaattiivvee aallllaa ffaassee ddii rreennddeerriinngg,, ggeessttiioonnee 
ddeell vviieewwssttaattee,, eecccc……))..
CCoonnttrrooll AAddaapptteerr 
EE’’ ppoossssiibbiillee ccaammbbiiaarree ccoommpplleettaammeennttee iill ccoommppoorrttaammeennttoo ddii uunn ccoonnttrroolllloo,, ccoonn uunn 
rriissuullttaattoo ssiimmiillee aa qquueelllloo cchhee ssii ootttteerrrreebbbbee ccrreeaannddoo uunnaa ccllaassssee cchhee eerreeddiittaa ddaall 
ccoonnttrroolllloo sstteessssoo,, iill vvaannttaaggggiioo èè cchhee qquueesstt’’uullttiimmaa ppuuòò eesssseerree vvaarriiaattaa iinn ffuunnzziioonnee ddeell 
ddeevviiccee eedd aattttiivvaabbiillee iinnsseerreennddoo uunn ffiillee ddii ddeeffiinniizziioonnee.. 
EEssiissttoonnoo ddiivveerrssii ttiippii ddii CCoonnttoollAAddaapptteerrss aa sseeccoonnddaa ddeell ttiippoo ddii ccoonnttrroolllloo cchhee ssii vvuuoollee 
rriiddeeffiinniirree:: 
•CCoonnttrroollAAddaapptteerr -- aaddaattttoo ppeerr qquuaallssiiaassii ttiippoo ddii ccoonnttrroolllloo.. 
•WWeebbCCoonnttrroollAAddaapptteerr -- ddaa uussaarree ppeerr ttuuttttii qquueeii ccoonnttrroollllii cchhee eerreeddiittaannoo ddaa WWeebbCCoonnttrrooll.. 
•DDaattaaBBoouunnddCCoonnttrroollAAddaapptteerr -- ddaa uussaarree ppeerr rriiddeeffiinniirree ii ccoonnttrroollllii cchhee ssuuppppoorrttaannoo iill 
ddaattaabboouunndd ccoommee llaa GGrriiddVViieeww.. 
•HHiieerraarrcchhiiccaallDDaattaaBBoouunnddCCoonnttrroollAAddaapptteerr -- aaddaattttoo ppeerr ii ccoonnttrroollllii cchhee ssuuppppoorrttaannoo iill 
ccaarriiccaammeennttoo ddii iinnffoorrmmaazziioonnii ggeerraarrcchhiicchhee ccoommee iill TTrreeeeVViieeww oo iill MMeennuu..
CCiicclloo ddii vviittaa ddii uunnaa ppaaggiinnaa
IIll MMooddeelllloo ddii RReennddeerriinngg 
DDuurraannttee iill cciicclloo ddii vviittaa ddii uunnaa ppaaggiinnaa,, aa sseegguuiittoo ddeellllee iinniizziiaalliizzzzaazziioonnii ee ddeellll’’hhaannddlliinngg ddeeggllii 
eevveennttii ssii rreennddee nneecceessssaarriioo rreennddeerriizzzzaarree iill ccoonnttrroolllloo ((oovvvveerroo pprroodduurrrree ccooddiiccee HHTTMMLL).. 
LL’’ooggggeettttoo PPaaggee dduurraannttee qquueessttaa ffaassee rriicchhiiaammaa rriiccoorrssiivvaammeennttee llaa ffuunnzziioonnee 
RReennddeerrCCoonnttrrooll(() ddii ooggnnii ooggggeettttoo ccoonnttrrooll.. 
AAll mmeettooddoo vviieennee ppaassssaattaa uunnaa iissttaannzzaa ddeellllaa ccllaassssee HHttmmllTTeexxttWWrriitteerr ((rreessppoonnssaabbiillee ddeell 
rreennddeerriinngg ddeeii ttaagg ee ddeeggllii aattttrriibbuuttii) ssoottttoo ffoorrmmaa ddii uunnaa ddeellllee ssuuee ssppeecciiaalliizzzzaazziioonnii:: 
 HHttmmll3322TTeexxttWWrriitteerr –– eemmeettttee HHTTMMLL 33..22.. 
 XXhhttmmllTTeexxttWWrriitteerr –– eemmeettttee hhttmmll ccoonnffoorrmmee aalllloo ssttaannddaarrdd xxhhttmmll.. 
 CChhttmmllTTeexxttWWrriitteerr –– eemmeettttee ccoommppaacctt hhttmmll ppeerr ssiisstteemmii ppaallmmaarrii.. 
PPeerr iiddeennttiiffiiccaarree qquuaallee ttiippoo ddii HHttmmllTTeexxttWWrriitteerr uuttlliizzzzaarree vviieennee aannaalliizzzzaattaa llaa ssttrriinnggaa 
UUsseerrAAggeenntt pprreesseennttee iinn ooggnnii rriicchhiieessttaa WWeebb.. 
QQuueessttaa ssttrriinnggaa vviieennee ccoommppaarraattaa ccoonn uunnaa lliissttaa bbeenn ddeeffiinniittaa ddii bbrroowwsseerr ooggnnuunnoo ddoottaattoo ddeellllee 
pprroopprriiee ccaarraatttteerriissttiicchhee ee tteeccnnoollooggiiee ssuuppppoorrttaattee.. LLaa lliissttaa vviieennee ddeeffiinniittaa aattttrraavveerrssoo uunnaa 
sseerriiee ddii ffiilleess ((..bbrroowwsseerr ffiilleess) aaddeerreennttii aadd uunnoo ssppeecciiffiiccoo sscchheemmaa.. TTrraa llee pprroopprriieettàà 
ssuuppppoorrttaattee vvii èè pprroopprriioo llaa ssppaacciiffiiccaa ddeellllaa ccllaassssee HHttmmllTTeexxttWWrriitteerr ddaa uuttiilliizzzzaarree 
((ttaaggwwrriitteerr).. 
AAddaappttiivvee RReennddrriinngg ddii ““pprriimmoo lliivveelllloo””
AAddaattttaattoorree ((AAddaapptteerr)) 
UUnn AAddaapptteerr ddeevvee eerreeddiittaarree ddaallllaa ccllaassssee bbaassee 
SSyysstteemm..WWeebb..UUII..AAddaapptteerrss..CCoonnttrroollAAddaapptteerr :: uunnaa ccllaassssee 
aassttrraattttaa cchhee eessppoonnee ii mmeettooddii IInniitt(()),, LLooaadd(()),, UUnnllooaadd(()),, 
PPrreeRReennddeerr(()) ee RReennddeerr(()),, eecccc…… cchhee vveerrrraannnnoo rriicchhiiaammaattii iinn 
ssoossttiittuuzziioonnee ddii qquueellllii ssttaannddaarrdd ddeeii ccoonnttrroollllii.. 
PPooiicchhéé ggllii aaddaapptteerr nnaassccoonnoo ppeerr ffoorrnniirree ccoommppoorrttaammeennttii 
aalltteerrnnaattiivvii aa sseeccoonnddaa ddeeii ddiiffffeerreennttii ddeevviiccee llee 
iinnffoorrmmaazziioonnii ssuuii mmaappppiinngg vvaannnnoo ssppeecciiffiiccaattee nneeii 
““..bbrroowwsseerr ffiilleess””.. 
AAddaappttiivvee RReennddrriinngg ddii ““sseeccoonnddoo lliivveelllloo””
AAddaappttiivvee RReennddeerriinngg -- 
AArrcchhiitteettttuurraa 
CCoonnttrrooll 
(internal rendering functions) AAddaapptteerr MMaappppiinnggss 
No Yes 
AAddaapptteerr pprreesseenntt?? 
CCoonnttrrooll..RReennddeerr(()) AAddaapptteerr..RReennddeerr(())
MMaappppiinnggss ee RRiiccoonnoosscciimmeennttoo ddeeii 
BBrroowwsseerr 
IInn AASSPP..NNEETT 11..xx iill rriiccoonnoosscciimmeennttoo ddeeii bbrroowwsseerr vveenniivvaa 
eeffffeettttuuaattoo mmeeddiiaannttee llee sseezziioonnee <<bbrroowwsseerrCCaappss>> nneell 
wweebb..ccoonnffiigg ((oo nneell mmaacchhiinnee..ccoonnffiigg).. 
IInn AASSPP..NNEETT 22..00 ttaallee mmeettooddoo vviieennee mmaanntteennuuttoo mmaa ssii 
ccoonnssiigglliiaa ll’’uuttiilliizzzzoo ddeeii ..bbrroowwsseerr ffiilleess:: ffiillee XXMMLL cchhee 
ccoonnsseennttoonnoo ddii ssppeecciiffiiccaarree llee ccaarraatttteerriissttiicchhee ddeeii ddiiffffeerreennttii 
bbrroowwsseerr.. 
PPoossssoonnoo rriissiieeddeerree ssiiaa nneellllaa ddiirreeccttoorryy ‘‘AApppp__BBrroowwsseerrss’’ 
aallll’’iinntteerrnnoo ddeell ssiittoo,, ssiiaa gglloobbaallmmeennttee aall ppeerrssoorrssoo 
‘‘%%SSYYSSTTEEMM 
%%MMiiccrroossoofftt..NNEETTFrraammeewwoorrkkvv22..00..5500772277CCoonnffiiggBBrr 
oowwsseerrss’’..
..bbrroowwsseerr ffiillee -- iiddeennttiiffiiccaazziioonnee 
UUttiilliizzzzaattii ppeerr ppooppoollaarree llaa ccllaassssee HHttttppBBrroowwsseerrCCaappaabbiilliittiieess cchhee iissttrruuiissccee AASSPP..NNEETT 
ssuullllee ffuunnzziioonnaalliittàà eessppoossttee ddaall bbrroowwsseerr ee ssuu ccoommee rreennddeerriizzzzaarree llaa ppaaggiinnaa.. 
SSppeecciiffiiccaa:: 
 <<bbrroowwsseerr ppaarreennttIIDD==““……””>> -- eelleemmeennttoo cchhee ddeeffiinniissccee uunn sseett ddii ccaappaabbiilliittyy ddaa 
aasssseeggnnaarree aadd uunnoo oo ppiiùù bbrroowwsseerrss,, ll’’aattttrriibbuuttoo ppaarreennttIIDD vviieennee uuttiilliizzzzaattoo ppeerr 
iiddeennttiiffiiccaarree uunnaa ccaatteeggoorriiaa//iinnssiieemmee ddii bbrroowwsseerrss aallll’’iinntteerrnnoo ddii uunnaa bbeenn ddeeffiinniittaa 
ggeerraarrcchhiiaa.. 
 <<iiddeennttiiffiiccaattiioonn>> -- ssuubbeelleemmeenntt ccoonntteenneennttee llee rreeggoollee ddii iiddeennttiiffiiccaazziioonnee,, eesspprreessssee 
ccoommee rreegguullaarr eexxpprreessssiioonn cchhee ddeevvoonnoo eeffffeettttuuaarree mmaattcchhiinngg ssuullllaa ssttrriinnggaa 
UUsseerrAAggeenntt ddeellllaa rriicchhiieessttaa.. 
 <<uusseerraaggeenntt mmaattcchh==““”” //>> -- ssuubbeelleemmeenntt cchhee ssppeeffiicciiccaa iill mmaattcchh ddii iinncclluussiioonnee.. 
 <<uusseerraaggeenntt nnoonnMMaattcchh==““”” //>> -- ssuubbeelleemmeenntt cchhee ssppeecciiffiiccaa ii mmaattcchh ddii 
eesscclluussiioonnee..
GGeerraarrcchhiiaa ddeeii BBrroowwsseerrss
..bbrroowwsseerr ffiillee 
<<bbrroowwsseerrss>> 
<<bbrroowwsseerr iidd==""IIEE"" ppaarreennttIIDD==""MMoozziillllaa"">> 
<<iiddeennttiiffiiccaattiioonn>> 
<<uusseerrAAggeenntt mmaattcchh==""^^MMoozziillllaa[[^^((]]**(([[CC||cc]]oommppaattiibbllee;;ss**MMSSIIEE 
((??’’vveerrssiioonn’’((??’’mmaajjoorr’’dd++))((??’’mmiinnoorr’’..dd++))((??’’lleetttteerrss’’ww**)))) ((??’’eexxttrraa’’[[^^))]]**))"" //>> 
<<uusseerrAAggeenntt nnoonnMMaattcchh==""OOppeerraa||GGoo..WWeebb||WWiinnddoowwss CCEE|| 
EEuuddoorraaWWeebb"" //>> 
<<//iiddeennttiiffiiccaattiioonn>> 
<<ccaappaabbiilliittiieess>> 
<<ccaappaabbiilliittyy nnaammee==""bbrroowwsseerr"" vvaalluuee==""IIEE"" //>> 
<<ccaappaabbiilliittyy nnaammee==""eexxttrraa"" vvaalluuee==""$${{eexxttrraa}}"" //>> 
<<ccaappaabbiilliittyy nnaammee==""iissCCoolloorr"" vvaalluuee==""ttrruuee"" //>> 
…… 
Esempio di definizione delle caratteristiche del browser Internet Explorer
.browser ffiillee –– mmaappppiinngg ddeeggllii aaddaapptteerr 
IIll ttiippoo SSyysstteemm..WWeebb..UUII..CCoonnttrrooll ddiissppoonnee ddii uunnaa pprroopprriieettàà 
AAddaapptteerr cchhee rreessttiittuuiissccee ll''ooggggeettttoo iinnccaarriiccaattoo ddii ooppeerraarree llee 
nnoorrmmaallii ooppeerraazziioonnii ddii uunn ccoonnttrroolllloo ppeerr uunnoo ssppeecciiffiiccoo 
ddeevviiccee.. 
PPeerr ccrreeaarree ll’’ooggggeettttoo iill mmeettooddoo RReessoollvveeAAddaapptteerr(()) 
iiddeennttiiffiiccaa iill ddiissppoossiittiivvoo iinn bbaassee aallllee ddeeffiinniizziioonnii ddeeii 
bbrroowwsseerr:: 
 VViieennee aannaalliizzzzaattaa llaa sseezziioonnee ccoonnttrroollAAddaapptteerrss ddeell ttaagg bbrroowwsseerr.. 
 ccoonnttrroollAAddaapptteerrss èè ccoossttiittuuiittoo ddaa uunnaa lliissttaa ddii ttaagg aaddaapptteerr 
iinnddiiccaannttii llaa ccooppppiiaa ccoonnttrroollTTyyppee//aaddaapptteerrTTyyppee..
.bbrroowwsseerr ffiillee -- CCssssAAddaapptteerrCCoonnttrroollss 
<<bbrroowwsseerrss>> 
<<bbrroowwsseerr rreeffIIDD==""DDeeffaauulltt"">> 
<<ccoonnttrroollAAddaapptteerrss>> 
<<aaddaapptteerr ccoonnttrroollTTyyppee==""SSyysstteemm..WWeebb..UUII..WWeebbCCoonnttrroollss..MMeennuu"" 
aaddaapptteerrTTyyppee==""CCSSSSFFrriieennddllyy..MMeennuuAAddaapptteerr"" //>> 
<<aaddaapptteerr ccoonnttrroollTTyyppee==""SSyysstteemm..WWeebb..UUII..WWeebbCCoonnttrroollss..TTrreeeeVViieeww"" 
aaddaapptteerrTTyyppee==""CCSSSSFFrriieennddllyy..TTrreeeeVViieewwAAddaapptteerr"" //>> 
<<aaddaapptteerr ccoonnttrroollTTyyppee==""SSyysstteemm..WWeebb..UUII..WWeebbCCoonnttrroollss..DDeettaaiillssVViieeww"" 
aaddaapptteerrTTyyppee==""CCSSSSFFrriieennddllyy..DDeettaaiillssVViieewwAAddaapptteerr"" //>> 
…… 
<<//ccoonnttrroollAAddaapptteerrss>> 
<<//bbrroowwsseerr>> 
<<bbrroowwsseerr iidd==""WW33CC__VVaalliiddaattoorr"" ppaarreennttIIDD==""ddeeffaauulltt"">> 
<<iiddeennttiiffiiccaattiioonn>> 
<<uusseerrAAggeenntt mmaattcchh==""^^WW33CC__VVaalliiddaattoorr"" //>> 
<<//iiddeennttiiffiiccaattiioonn>> 
<<ccaappaabbiilliittiieess>> 
<<ccaappaabbiilliittyy nnaammee==""bbrroowwsseerr"" vvaalluuee==""WW33CC VVaalliiddaattoorr"" //>> 
<<ccaappaabbiilliittyy nnaammee==""eeccmmaaSSccrriippttVVeerrssiioonn"" vvaalluuee==""11..22"" //>> 
…… 
<<ccaappaabbiilliittyy nnaammee==""ttaaggWWrriitteerr"" vvaalluuee==""SSyysstteemm..WWeebb..UUII..HHttmmllTTeexxttWWrriitteerr"" //>> 
<<ccaappaabbiilliittyy nnaammee==""ww33ccddoommvveerrssiioonn"" vvaalluuee==""11..00"" //>> 
<<//ccaappaabbiilliittiieess>> 
<<//bbrroowwsseerr>> 
<<//bbrroowwsseerrss>>
CCSSSS FFrriieennddllyy AAddaapptteerrss 
SSii ttrraattttaa ddii uunnaa sseerriiee ddii AAddaapptteerrss aappppoossiittaammeennttee ccrreeaattii ppeerr ffaarr ffrroonnttee aallllaa dduupplliiccee 
nneecceessssiittàà ddaa ppaarrttee ddeeggllii wweebb--ddeessiiggnneerr ddii aavveerree ccoonnttrroollllii cchhee rreennddeerriizzzziinnoo uunn 
llaayyoouutt ccoorrrreettttoo ee ppootteerr ssppeecciiffiiccaarree ttuuttttii ggllii aattttrriibbuuttii ddii ssttiillee ppeerr ii ccoonnttrroollllii 
uuttiilliizzzzaannddoo ii ffooggllii ddii ssttiillee iinnvveeccee cchhee rriiccoorrrreerree aadd aattttrriibbuuttii sseerrvveerr--ssiiddee.. 
 TTuuttttii ggllii aattttrriibbuuttii ddii ssttiillee vveennggoonnoo iinnccaappssuullaattii iinn uunnaa sstteessssaa ccllaassssee CCSSSS,, iinn 
qquueessttoo mmooddoo èè ppoossssiibbiillee ccrreeaarree ssttiillii ddiivveerrssii aassssoocciiaattii aa ccllaassssii ddiivveerrssee.. 
 EE’’ ppoossssiibbiillee ssppeecciiffiiccaarree iill sseett ddii ssttiillii aassssoocciiaattoo aadd uunn ppaarrttiiccoollaarree ccoonnttrroolllloo 
rriiccoorrrreennddoo aallll’’aattttrriibbuuttoo CCssssSSeelleeccttoorrCCllaassss.. 
 PPeerr ggaarraannttiirree iill ccoorrrreettttoo wwiirriinngg ddeeggllii eevveennttii ((ggeenneerraattii ddaaii ccoonnttrroollllii aaddaattttaattii)) llee 
ffuunnzziioonnii ddii ggeessttiioonnee ddeevvoonnoo eesssseerree ssppeecciiffiiccaarree rriiccoorrrreennddoo aadd aattttrriibbuuttii cchhee 
iinniizziinnoo ccoonn iill pprreeffiissssoo OOnnAAddaapptteedd ((eexx ppeerr uunnaa ttrreeeevviieeww:: 
OOnnSSeelleecctteeddNNooddeeCChhaannggeedd==""SSeelleecctteeddNNooddeeCChhaannggeedd““ 
OOnnAAddaapptteeddSSeelleecctteeddNNooddeeCChhaannggeedd==""SSeelleecctteeddNNooddeeCChhaannggeedd““)).. 
 AAllccuunnii eevveennttii ttiippiiccii ddii ddeetteerrmmiinnaattii ccoonnttrroollllii ppoottrreebbbbeerroo nnoonn eesssseerree ppiiùù 
ssuuppppoorrttaattii aa ccaauussaa ddeellll’’oovveerrrriiddee ddeellllee ffuunnzziioonnii ddii ggeenneerraazziioonnee ddeeggllii eevveennttii ddii 
ppoossttbbaacckk ((eexx:: ggllii eevveennttii eexxppaanndd ee ccoollllaappssee ddeellllaa ttrreeeevviieeww))..
CCSSSS FFrriieennddllyy AAddaapptteerrss -- UUttiilliizzzzoo 
• Istallare lo Starter Kit (http://www.asp.net/cssadapters/). 
• Creare un nuovo sito web mediante i template messi a disposizione dallo Starter Kit. 
• Copiare il file CssFriendlyAdapters.browser nella directory App_Browsers del sito di 
destinazione. 
• Copiare il contenuto della directory Adapters situata in App_Code nella corrispondnete 
posizione nel sito di destinazione. 
• Copiare la directory CSS situata nella root del sito nella corrispondente posizione del sito 
di destinazione. 
• Copiare la directory Javascript situata nella root del sito nella corrispondente posizione del 
sito di destinazione. 
• Inserire in ogni pagina che deve utlizzare gli adapters (meglio se nelle master page) i link ai 
file css comuni utilizzando le direttive: 
<link runat="server" rel="stylesheet" href="~/CSS/Import.css" type="text/css" id="AdaptersInvariantImportCSS" /> 
<!--[if lt IE 7]> 
<link runat="server" rel="stylesheet" href="~/CSS/BrowserSpecific/IEMenu6.css" type="text/css" id="IEMenu6CSS" /> 
<![endif]--> 
• Creare gli opportuni fogli di stile nella cartella App_Themes. 
• Settare nel web.config l’elemento xhtmConformance a strict (<xhtmlConformance 
mode="Strict"/>) in modo da indicare all’engine Asp.NET di renderizzare gli elemnti in 
conformità allo standard xhtml.
CCSSSS FFrriieennddllyy AAddaapptteerrss 
EEsseemmppiioo HHTTMMLL 
<<!!DDOOCCTTYYPPEE hhttmmll PPUUBBLLIICC ""--////WW33CC////DDTTDD XXHHTTMMLL 11..00 SSttrriicctt////EENN"" 
""hhttttpp::////wwwwww..ww33..oorrgg//TTRR//xxhhttmmll11//DDTTDD//xxhhttmmll11--ssttrriicctt..ddttdd"">> 
<<hhttmmll xxmmllnnss==""hhttttpp::////wwwwww..ww33..oorrgg//11999999//xxhhttmmll"">> 
<<hheeaadd rruunnaatt==""sseerrvveerr"">> 
<<ttiittllee>>UUnnttiittlleedd PPaaggee<<//ttiittllee>> 
<<lliinnkk rruunnaatt==""sseerrvveerr"" rreell==""ssttyylleesshheeeett"" hhrreeff==""~~//CCSSSS//IImmppoorrtt..ccssss"" ttyyppee==""tteexxtt//ccssss"" 
iidd==""AAddaapptteerrssIInnvvaarriiaannttIImmppoorrttCCSSSS"" //>> 
<<!!----[[iiff lltt IIEE 77]]>> 
<<lliinnkk rruunnaatt==""sseerrvveerr"" rreell==""ssttyylleesshheeeett"" hhrreeff==""~~//CCSSSS//BBrroowwsseerrSSppeecciiffiicc//IIEEMMeennuu66..ccssss"" ttyyppee==""tteexxtt//ccssss"" 
iidd==""IIEEMMeennuu66CCSSSS"" //>> 
<<!![[eennddiiff]]---->> 
<<//hheeaadd>> 
<<bbooddyy>> 
<<ffoorrmm iidd==""ffoorrmm11"" rruunnaatt==""sseerrvveerr"">> 
<<ddiivv iidd==""llaayyoouutt"">> 
…… 
<<aasspp::MMeennuu CCssssSSeelleeccttoorrCCllaassss==""MMyyMMeennuu"" IIDD==""mmnnuuHHoorriizzoonnttaall"" rruunnaatt==""sseerrvveerr"" 
DDaattaaSSoouurrcceeIIDD==""xxmmllHHoorriizzoonnttaall"" 
OOrriieennttaattiioonn==""HHoorriizzoonnttaall"">> 
<<DDaattaaBBiinnddiinnggss>> 
<<aasspp::MMeennuuIItteemmBBiinnddiinngg DDaattaaMMeemmbbeerr==""ssiitteeMMaappNNooddee"" TTeexxttFFiieelldd==""ttiittllee"" NNaavviiggaatteeUUrrllFFiieelldd==""uurrll"" //>> 
<<//DDaattaaBBiinnddiinnggss>> 
<<//aasspp::MMeennuu>>
CCSSSS FFrriieennddllyy AAddaapptteerrss 
EEsseemmppiioo CCSSSS 
.MyMenu 
{ 
background-color: #B9C7E4; 
width: 100%; 
} 
.MyMenu ul.AspNet-Menu /* Tier 1 */ 
{ 
left: 160px; 
} 
.MyMenu ul.AspNet-Menu ul /* Tier 2 */ 
{ 
width: 10em; 
top: 100%; 
left: 0; 
border: 1px solid #003398; 
} 
.MyMenu ul.AspNet-Menu ul ul /* Tier 3+ */ 
{ 
top: 0em; 
left: 10em; 
border: 1px solid #003398; 
} 
.MyMenu li /* all list items */ 
{ 
width: 10em; 
background-color: #B9C7E4; 
color: #003398; 
} 
.MyMenu li:hover, /* list items being hovered over */ .MyMenu 
li.AspNet-Menu-Hover 
{ 
background: Black; 
} 
.MyMenu a, /* all anchors and spans (nodes with no link) */ .MyMenu 
span 
{ 
color: #003398; 
padding: 4px 2px 4px 8px; 
}
DDEEMMOO 
MMaammmmuutthh ss..rr..ll..
DDEEMMOO
DDEEMMOO
DDEEMMOO
DDEEMMOO
LLiimmiittii ddeeggllii AAddaapptteerr CCoonnttrroollss 
 MMoollttii ddeeggllii aattttrriibbuuttii ddii ssttiillee ee ffoorrmmaattttaazziioonnee iimmppoossttaabbiillii 
nneell ddeessiiggnneerr vveennggoonnoo ccoommpplleettaammeennttee iiggnnoorraattii,, ttuuttttaa llaa 
ffoorrmmaattttaazziioonnee vviieennee ffaattttaa mmeeddiiaannttee ccllaassssii ccssss.. 
 NNoonn ttuuttttii ggllii eevveennttii ssttaannddaarrdd ddii uunn ccoonnttrroolllloo vveennggoonnoo 
ggeessttiittii ((ggllii eevveennttii ccoollllaappssee eedd eexxppaanndd ddii uunnaa ttrreeeevviieeww aadd 
eesseemmppiioo)).. 
 NNeecceessssiittaannoo aannccoorraa ddii aallccuunnee ppiiccccoollee ccoorrrreezziioonnii ppeerr 
ggeenneerraarree ccooddiiccee ccoommpplleettaammeennttee ‘‘aacccceessssiibbiillee’’ ssoopprraattttuuttttoo 
iinn ccaassoo ddii rreennddeerriinngg ddii lliissttee ddii eelleemmeennttii pprriivvee ddii 
ccoonntteennuuttoo..
DDOOMMAANNDDEE ?? 
((SSppeerroo ddii nnoo))

Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0

  • 1.
    AAddaappttiivvee RReennddeerriinngg -- CCssss FFrriieennddllyy AAddaapptteerrss
  • 2.
    DDootttt.. IInngg.. GGiioorrggeettttiiAAlleessssaannddrroo alessandro.giorgetti@GruppoSID.com www.GruppoSID.com www.dotnetmarche.org
  • 3.
    RReennddeerriinngg AAddaattttaattiivvoo IIllccoonncceettttoo ddii rreennddeerriinngg aaddaattttiivvoo ((oo ppiiùù iinn ggeenneerraallee ddii AAddaappttiivvee CCoonnttrrooll BBeehhaavviioouurr)) nnaassccee oorriiggiinnaarriiaammeennttee ccoommee mmeezzzzoo ppeerr rraaggggiiuunnggeerree uunnaa mmaaggggiioorree eeffffiicciieennzzaa ee fflleessssiibbiilliittàà nneelllloo ssvviilluuppppoo ddii ccooddiiccee ((iinn aapppplliiccaattiivvii wweebb iinn ggeenneerraallee)) qquuaannddoo ssii ttrraattttaa ddii rraapppprreesseennttaarree iill ccoonntteennuuttoo ddeellllaa sstteessssaa ppaaggiinnaa ssuu ddiissppoossiittiivvii ddiiffffeerreennttii.. TTiippiiccoo èè iill ccaassoo ddii ppaallmmaarrii ee tteelleeffoonniinnii iinn ggrraaddoo ddii aacccceeddeerree aadd iinntteerrnneett,, eessssii nnoonn ssoonnoo iinn ggrraaddoo ddii rreennddeerriizzzzaarree uunn ppaaggiinnaa wweebb iinn HHTTMMLL ssttaannddaarrdd,, mmaa nneecceessssiittaannoo ddii uunn pprroopprriioo ddiiaalleettttoo.. DDuuee ssoonnoo llee ssttrraaddee ddaa sseegguuiirree iinn qquueessttoo ccaassoo:: 11- RRiissccrriivveerree ccoommpplleettaammeennttee ll’’iinntteerrffaacccciiaa uutteennttee ee rreeaalliizzzzaarrnnee uunnaa vveerrssiioonnee ppeerr ooggnnii ddiissppoossiittiivvoo ((uuttiilliizzzzaannddoo vveerrssiioonnii ddeeddiiccaattee ddeeii ccoonnttrroollllii)).. 22- AAddaattttaarree ll’’iinntteerrffaacccciiaa aall ddeevviiccee llaasscciiaannddoo aaii ssiinnggoollii ccoonnttrroollllii ll’’iinnccoommbbeennzzaa ddii vvaarriiaarree llaa vviissuuaalliizzzzaazziioonnee iinn bbaassee aall ddeevviiccee sstteessssoo..
  • 4.
    GGeenneerraalliizzzzaazziioonnee Se poisi considerano come ddeevviiccee ddiissttiinnttii,, oollttrree aallllaa mmoollttiittuuddiinnee ddii ssiisstteemmii ooppeerraattiivvii,, aanncchhee ii ddiivveerrssii bbrroowwsseerr cchhee eessiissttoonnoo ssuull mmeerrccaattoo ppeerr uunnaa sstteessssaa ppiiaattttaaffoorrmmaa ((ooggnnuunnoo ccoonn llee pprroopprriiee ppeeccuulliiaarriittàà)),, ssii ccoommpprreennddee ccoommee llaa tteeccnnoollooggiiaa ddeell rreennddeerriinngg aaddaattttaattiivvoo ppoossssaa ddii ffaattttoo aaiiuuttaarree mmoollttiissssiimmoo.. IIll bbrroowwsseerr ppuuòò iinnffaattttii eesssseerree ccoorrrreettttaammeennttee iiddeennttiiffiiccaattoo mmeeddiiaannttee lloo UUsseerrAAggeenntt ddeellllaa rriicchhiieessttaa eedd iill ccoonnttrroolllloo ppuuòò vvaarriiaarree llaa pprroopprriiaa rraapppprreesseennttaazziioonnee ddii ccoonnsseegguueennzzaa..
  • 5.
    AAddaappttiivvee CCoonnttrrooll BBeehhaavviioouurr IIll ccoonncceettttoo ddii aaddaattttaattoorree ((aaddaapptteerr)) ppuuòò eesssseerr uulltteerriioorrmmeennttee ggeenneerraalliizzzzaattoo,, iinn ..NNEETT ssii ppaarrllaa ddii AAddaappttiivvee CCoonnttrrooll BBeehhaavviioouurr:: mmoollttii ddeeii ppuunnttii ccrriittiiccii nneell cciicclloo ddii vviittaa ddii uunnaa eennttiittàà ((ssiiaa eessssoo uunn ccoonnttrroolllloo oo ll’’iinntteerraa ppaaggiinnaa)) ppoossssoonnoo eesssseerree iinntteerrcceettttaattii ee ssoossttiittuuiittii ddaaii ccoorrrriissppoonnddeennttii mmeettooddii ddii uunn aaddaapptteerr.. EE’’ ppoossssiibbiillee iinnffaattttii iinntteerrcceettttaarree eedd aaddaattttaarree aallttrrii ccoommppoorrttaammeennttii ssttaannddaarrdd ddeeii ccoonnttrroollllii ccoommee aadd eesseemmppiioo:: iill ccaacchhiinngg,, llaa ggeessttiioonnee ddeell vviieeww-ssttaattee oo llaa pprroocceessssaazziioonnee ddeeii ddaattii ddii ppoosstt-bbaacckk..
  • 6.
    LLaa NNeecceessssiittàà GGllii aattttuuaallii rreeqquuiissiittii ddii ddeessiiggnn ppeerr uunn ssiittoo wweebb iimmppoonnggoonnoo uunn mmaaggggiioorree rriissppeettttoo ddeellllaa ssiinnttaassssii,, ddeellllee rreeggoollee ee ddeeggllii sscchheemmii aassssoocciiaattii aaii lliinngguuaaggggii HHTTMMLL ee XXHHTTMMLL..  IIll bbuuoonn sseennssoo iinnoollttrree ddoovvrreebbbbee ssppiinnggeerree aa nnoonn uuttiilliizzzzaarree iinn mmooddoo ssccoorrrreettttoo ii ddiiffffeerreennttii ttaagg ddeell lliinngguuaaggggiioo ((iill ttaagg <<ttaabbllee>> ddeevvee eesssseerree uussaattoo ppeerr rraapppprreesseennttaarree ddaattii ttaabbuullaattii,, nnoonn iimmppoossttaarree uunn llaayyoouutt))..  IInnoollttrree llee nnoorrmmaattiivvee iimmppoonnggoonnoo uulltteerriioorrii lliimmiittii:: llaa lleeggggee SSttaannccaa ((iinn IIttaalliiaa)) eedd aallttrree nnoorrmmaattiivvee eeuurrooppeeee ee mmoonnddiiaallii ddeeffiinniissccoonnoo llee ccaarraatttteerriissttiicchhee tteeccnniicchhee ((ee nnoonn ssoolloo)) mmiinniimmee cchhee uunn ssiittoo ddeevvee aavveerree ppeerr rriissppeettttaarree ddeeggllii ssttaannddaarrdd ddii aacccceessssiibbiilliittàà eedd eesssseerree qquuiinnddii ffrruuiibbiillee ddaa ttuuttttii iinn mmooddoo ccoonnssoonnoo..
  • 7.
    Quando iill FFrraammeewwoorrkk‘‘rreemmaa ccoonnttrroo’’ TTrraa ii pprriinncciippaallii pprroobblleemmii//ddiiffffiiccoollttàà ddaa aaffffrroonnttaarree nneellllaa ccoossttrruuzziioonnee ddii uunn ssiittoo cchhee rriissppeettttii ii nnuuoovvii ssttaannddaarrdd:: 11- LLaayyoouutt ee ffoorrmmaattttaazziioonnee ccssss-bbaasseedd ((eevviittaannddoo ggllii ssttiillii iinnlliinnee iill ppiiùù ppoossssiibbiillee,, iiddeeaallmmeennttee nnoonn ccee nnee ddoovvrreebbbbeerroo eesssseerree)).. 22- AAbbuussoo ddeeii ttaagg ((eexx:: <<ttaabbllee>> nneellllaa ddeeffiinniizziioonnee ddeell llaayyoouutt ddii uunnaa ppaaggiinnaa)).. 33- UUttiilliizzzzoo ddii aattttrriibbuuttii ee ttaagg ccoonnssiiddeerraattii oobbssoolleettii.. II ccoonnttrroollllii ssttaannddaarrdd ddii AASSPP..NNEETT 11..xx ee 22..00 ccoommmmeettttoonnoo eennttrraammbbii qquueessttii eerrrroorrii..
  • 8.
    CCoommee rriissoollvvoo iillpprroobblleemmaa?? ..NNEETT 11..xx NNoonn ssii hhaa mmoollttaa sscceellttaa:: ppeerr vvaarriiaarree iill rreennddeerriinngg ssttaannddaarrdd ddeell ccoonnttrroolllloo ssii ddeevvee eerreeddiittaarree llaa ccllaassssee bbaassee ddeell ccoonnttrroolllloo ee rriissccrriivveerree llee ffuunnzziioonnii ddii rreennddeerriinngg.. CCii ssii ssccoonnttrraa iinn qquueessttoo ccaassoo ccoonn llaa ssccaarrssiittàà ddii ddooccuummeennttaazziioonnee ffoorrnniittaa ssuullll’’iimmpplleemmeennttaazziioonnee iinntteerrnnaa ddeeii ccoonnttrroollllii.. SSuuppppoorrttoo lliimmiittaattoo ppeerr AAddaappttiivvee RReennddeerriinngg ..NNEETT 22..00 AAddaappttiivvee RReennddeerriinngg,, ssuuppppoorrttoo eesstteessoo..
  • 9.
    CCoonnttrrooll AAddaapptteerr UUnnAAddaapptteerr èè uunnaa ccllaassssee//ooggggeettttoo aa ccuuii vveennggoonnoo ddeelleeggaattee ddeetteerrmmiinnaattee ffuunnzziioonnii eessppoossttee ddaa uunn ccoonnttrroolllloo bbaassee ((ssiiaannoo eessssee rreellaattiivvee aallllaa ffaassee ddii rreennddeerriinngg,, ggeessttiioonnee ddeell vviieewwssttaattee,, eecccc……))..
  • 10.
    CCoonnttrrooll AAddaapptteerr EE’’ppoossssiibbiillee ccaammbbiiaarree ccoommpplleettaammeennttee iill ccoommppoorrttaammeennttoo ddii uunn ccoonnttrroolllloo,, ccoonn uunn rriissuullttaattoo ssiimmiillee aa qquueelllloo cchhee ssii ootttteerrrreebbbbee ccrreeaannddoo uunnaa ccllaassssee cchhee eerreeddiittaa ddaall ccoonnttrroolllloo sstteessssoo,, iill vvaannttaaggggiioo èè cchhee qquueesstt’’uullttiimmaa ppuuòò eesssseerree vvaarriiaattaa iinn ffuunnzziioonnee ddeell ddeevviiccee eedd aattttiivvaabbiillee iinnsseerreennddoo uunn ffiillee ddii ddeeffiinniizziioonnee.. EEssiissttoonnoo ddiivveerrssii ttiippii ddii CCoonnttoollAAddaapptteerrss aa sseeccoonnddaa ddeell ttiippoo ddii ccoonnttrroolllloo cchhee ssii vvuuoollee rriiddeeffiinniirree:: •CCoonnttrroollAAddaapptteerr -- aaddaattttoo ppeerr qquuaallssiiaassii ttiippoo ddii ccoonnttrroolllloo.. •WWeebbCCoonnttrroollAAddaapptteerr -- ddaa uussaarree ppeerr ttuuttttii qquueeii ccoonnttrroollllii cchhee eerreeddiittaannoo ddaa WWeebbCCoonnttrrooll.. •DDaattaaBBoouunnddCCoonnttrroollAAddaapptteerr -- ddaa uussaarree ppeerr rriiddeeffiinniirree ii ccoonnttrroollllii cchhee ssuuppppoorrttaannoo iill ddaattaabboouunndd ccoommee llaa GGrriiddVViieeww.. •HHiieerraarrcchhiiccaallDDaattaaBBoouunnddCCoonnttrroollAAddaapptteerr -- aaddaattttoo ppeerr ii ccoonnttrroollllii cchhee ssuuppppoorrttaannoo iill ccaarriiccaammeennttoo ddii iinnffoorrmmaazziioonnii ggeerraarrcchhiicchhee ccoommee iill TTrreeeeVViieeww oo iill MMeennuu..
  • 11.
    CCiicclloo ddii vviittaaddii uunnaa ppaaggiinnaa
  • 12.
    IIll MMooddeelllloo ddiiRReennddeerriinngg DDuurraannttee iill cciicclloo ddii vviittaa ddii uunnaa ppaaggiinnaa,, aa sseegguuiittoo ddeellllee iinniizziiaalliizzzzaazziioonnii ee ddeellll’’hhaannddlliinngg ddeeggllii eevveennttii ssii rreennddee nneecceessssaarriioo rreennddeerriizzzzaarree iill ccoonnttrroolllloo ((oovvvveerroo pprroodduurrrree ccooddiiccee HHTTMMLL).. LL’’ooggggeettttoo PPaaggee dduurraannttee qquueessttaa ffaassee rriicchhiiaammaa rriiccoorrssiivvaammeennttee llaa ffuunnzziioonnee RReennddeerrCCoonnttrrooll(() ddii ooggnnii ooggggeettttoo ccoonnttrrooll.. AAll mmeettooddoo vviieennee ppaassssaattaa uunnaa iissttaannzzaa ddeellllaa ccllaassssee HHttmmllTTeexxttWWrriitteerr ((rreessppoonnssaabbiillee ddeell rreennddeerriinngg ddeeii ttaagg ee ddeeggllii aattttrriibbuuttii) ssoottttoo ffoorrmmaa ddii uunnaa ddeellllee ssuuee ssppeecciiaalliizzzzaazziioonnii::  HHttmmll3322TTeexxttWWrriitteerr –– eemmeettttee HHTTMMLL 33..22..  XXhhttmmllTTeexxttWWrriitteerr –– eemmeettttee hhttmmll ccoonnffoorrmmee aalllloo ssttaannddaarrdd xxhhttmmll..  CChhttmmllTTeexxttWWrriitteerr –– eemmeettttee ccoommppaacctt hhttmmll ppeerr ssiisstteemmii ppaallmmaarrii.. PPeerr iiddeennttiiffiiccaarree qquuaallee ttiippoo ddii HHttmmllTTeexxttWWrriitteerr uuttlliizzzzaarree vviieennee aannaalliizzzzaattaa llaa ssttrriinnggaa UUsseerrAAggeenntt pprreesseennttee iinn ooggnnii rriicchhiieessttaa WWeebb.. QQuueessttaa ssttrriinnggaa vviieennee ccoommppaarraattaa ccoonn uunnaa lliissttaa bbeenn ddeeffiinniittaa ddii bbrroowwsseerr ooggnnuunnoo ddoottaattoo ddeellllee pprroopprriiee ccaarraatttteerriissttiicchhee ee tteeccnnoollooggiiee ssuuppppoorrttaattee.. LLaa lliissttaa vviieennee ddeeffiinniittaa aattttrraavveerrssoo uunnaa sseerriiee ddii ffiilleess ((..bbrroowwsseerr ffiilleess) aaddeerreennttii aadd uunnoo ssppeecciiffiiccoo sscchheemmaa.. TTrraa llee pprroopprriieettàà ssuuppppoorrttaattee vvii èè pprroopprriioo llaa ssppaacciiffiiccaa ddeellllaa ccllaassssee HHttmmllTTeexxttWWrriitteerr ddaa uuttiilliizzzzaarree ((ttaaggwwrriitteerr).. AAddaappttiivvee RReennddrriinngg ddii ““pprriimmoo lliivveelllloo””
  • 13.
    AAddaattttaattoorree ((AAddaapptteerr)) UUnnAAddaapptteerr ddeevvee eerreeddiittaarree ddaallllaa ccllaassssee bbaassee SSyysstteemm..WWeebb..UUII..AAddaapptteerrss..CCoonnttrroollAAddaapptteerr :: uunnaa ccllaassssee aassttrraattttaa cchhee eessppoonnee ii mmeettooddii IInniitt(()),, LLooaadd(()),, UUnnllooaadd(()),, PPrreeRReennddeerr(()) ee RReennddeerr(()),, eecccc…… cchhee vveerrrraannnnoo rriicchhiiaammaattii iinn ssoossttiittuuzziioonnee ddii qquueellllii ssttaannddaarrdd ddeeii ccoonnttrroollllii.. PPooiicchhéé ggllii aaddaapptteerr nnaassccoonnoo ppeerr ffoorrnniirree ccoommppoorrttaammeennttii aalltteerrnnaattiivvii aa sseeccoonnddaa ddeeii ddiiffffeerreennttii ddeevviiccee llee iinnffoorrmmaazziioonnii ssuuii mmaappppiinngg vvaannnnoo ssppeecciiffiiccaattee nneeii ““..bbrroowwsseerr ffiilleess””.. AAddaappttiivvee RReennddrriinngg ddii ““sseeccoonnddoo lliivveelllloo””
  • 14.
    AAddaappttiivvee RReennddeerriinngg -- AArrcchhiitteettttuurraa CCoonnttrrooll (internal rendering functions) AAddaapptteerr MMaappppiinnggss No Yes AAddaapptteerr pprreesseenntt?? CCoonnttrrooll..RReennddeerr(()) AAddaapptteerr..RReennddeerr(())
  • 15.
    MMaappppiinnggss ee RRiiccoonnoosscciimmeennttooddeeii BBrroowwsseerr IInn AASSPP..NNEETT 11..xx iill rriiccoonnoosscciimmeennttoo ddeeii bbrroowwsseerr vveenniivvaa eeffffeettttuuaattoo mmeeddiiaannttee llee sseezziioonnee <<bbrroowwsseerrCCaappss>> nneell wweebb..ccoonnffiigg ((oo nneell mmaacchhiinnee..ccoonnffiigg).. IInn AASSPP..NNEETT 22..00 ttaallee mmeettooddoo vviieennee mmaanntteennuuttoo mmaa ssii ccoonnssiigglliiaa ll’’uuttiilliizzzzoo ddeeii ..bbrroowwsseerr ffiilleess:: ffiillee XXMMLL cchhee ccoonnsseennttoonnoo ddii ssppeecciiffiiccaarree llee ccaarraatttteerriissttiicchhee ddeeii ddiiffffeerreennttii bbrroowwsseerr.. PPoossssoonnoo rriissiieeddeerree ssiiaa nneellllaa ddiirreeccttoorryy ‘‘AApppp__BBrroowwsseerrss’’ aallll’’iinntteerrnnoo ddeell ssiittoo,, ssiiaa gglloobbaallmmeennttee aall ppeerrssoorrssoo ‘‘%%SSYYSSTTEEMM %%MMiiccrroossoofftt..NNEETTFrraammeewwoorrkkvv22..00..5500772277CCoonnffiiggBBrr oowwsseerrss’’..
  • 16.
    ..bbrroowwsseerr ffiillee --iiddeennttiiffiiccaazziioonnee UUttiilliizzzzaattii ppeerr ppooppoollaarree llaa ccllaassssee HHttttppBBrroowwsseerrCCaappaabbiilliittiieess cchhee iissttrruuiissccee AASSPP..NNEETT ssuullllee ffuunnzziioonnaalliittàà eessppoossttee ddaall bbrroowwsseerr ee ssuu ccoommee rreennddeerriizzzzaarree llaa ppaaggiinnaa.. SSppeecciiffiiccaa::  <<bbrroowwsseerr ppaarreennttIIDD==““……””>> -- eelleemmeennttoo cchhee ddeeffiinniissccee uunn sseett ddii ccaappaabbiilliittyy ddaa aasssseeggnnaarree aadd uunnoo oo ppiiùù bbrroowwsseerrss,, ll’’aattttrriibbuuttoo ppaarreennttIIDD vviieennee uuttiilliizzzzaattoo ppeerr iiddeennttiiffiiccaarree uunnaa ccaatteeggoorriiaa//iinnssiieemmee ddii bbrroowwsseerrss aallll’’iinntteerrnnoo ddii uunnaa bbeenn ddeeffiinniittaa ggeerraarrcchhiiaa..  <<iiddeennttiiffiiccaattiioonn>> -- ssuubbeelleemmeenntt ccoonntteenneennttee llee rreeggoollee ddii iiddeennttiiffiiccaazziioonnee,, eesspprreessssee ccoommee rreegguullaarr eexxpprreessssiioonn cchhee ddeevvoonnoo eeffffeettttuuaarree mmaattcchhiinngg ssuullllaa ssttrriinnggaa UUsseerrAAggeenntt ddeellllaa rriicchhiieessttaa..  <<uusseerraaggeenntt mmaattcchh==““”” //>> -- ssuubbeelleemmeenntt cchhee ssppeeffiicciiccaa iill mmaattcchh ddii iinncclluussiioonnee..  <<uusseerraaggeenntt nnoonnMMaattcchh==““”” //>> -- ssuubbeelleemmeenntt cchhee ssppeecciiffiiccaa ii mmaattcchh ddii eesscclluussiioonnee..
  • 17.
  • 18.
    ..bbrroowwsseerr ffiillee <<bbrroowwsseerrss>> <<bbrroowwsseerr iidd==""IIEE"" ppaarreennttIIDD==""MMoozziillllaa"">> <<iiddeennttiiffiiccaattiioonn>> <<uusseerrAAggeenntt mmaattcchh==""^^MMoozziillllaa[[^^((]]**(([[CC||cc]]oommppaattiibbllee;;ss**MMSSIIEE ((??’’vveerrssiioonn’’((??’’mmaajjoorr’’dd++))((??’’mmiinnoorr’’..dd++))((??’’lleetttteerrss’’ww**)))) ((??’’eexxttrraa’’[[^^))]]**))"" //>> <<uusseerrAAggeenntt nnoonnMMaattcchh==""OOppeerraa||GGoo..WWeebb||WWiinnddoowwss CCEE|| EEuuddoorraaWWeebb"" //>> <<//iiddeennttiiffiiccaattiioonn>> <<ccaappaabbiilliittiieess>> <<ccaappaabbiilliittyy nnaammee==""bbrroowwsseerr"" vvaalluuee==""IIEE"" //>> <<ccaappaabbiilliittyy nnaammee==""eexxttrraa"" vvaalluuee==""$${{eexxttrraa}}"" //>> <<ccaappaabbiilliittyy nnaammee==""iissCCoolloorr"" vvaalluuee==""ttrruuee"" //>> …… Esempio di definizione delle caratteristiche del browser Internet Explorer
  • 19.
    .browser ffiillee ––mmaappppiinngg ddeeggllii aaddaapptteerr IIll ttiippoo SSyysstteemm..WWeebb..UUII..CCoonnttrrooll ddiissppoonnee ddii uunnaa pprroopprriieettàà AAddaapptteerr cchhee rreessttiittuuiissccee ll''ooggggeettttoo iinnccaarriiccaattoo ddii ooppeerraarree llee nnoorrmmaallii ooppeerraazziioonnii ddii uunn ccoonnttrroolllloo ppeerr uunnoo ssppeecciiffiiccoo ddeevviiccee.. PPeerr ccrreeaarree ll’’ooggggeettttoo iill mmeettooddoo RReessoollvveeAAddaapptteerr(()) iiddeennttiiffiiccaa iill ddiissppoossiittiivvoo iinn bbaassee aallllee ddeeffiinniizziioonnii ddeeii bbrroowwsseerr::  VViieennee aannaalliizzzzaattaa llaa sseezziioonnee ccoonnttrroollAAddaapptteerrss ddeell ttaagg bbrroowwsseerr..  ccoonnttrroollAAddaapptteerrss èè ccoossttiittuuiittoo ddaa uunnaa lliissttaa ddii ttaagg aaddaapptteerr iinnddiiccaannttii llaa ccooppppiiaa ccoonnttrroollTTyyppee//aaddaapptteerrTTyyppee..
  • 20.
    .bbrroowwsseerr ffiillee --CCssssAAddaapptteerrCCoonnttrroollss <<bbrroowwsseerrss>> <<bbrroowwsseerr rreeffIIDD==""DDeeffaauulltt"">> <<ccoonnttrroollAAddaapptteerrss>> <<aaddaapptteerr ccoonnttrroollTTyyppee==""SSyysstteemm..WWeebb..UUII..WWeebbCCoonnttrroollss..MMeennuu"" aaddaapptteerrTTyyppee==""CCSSSSFFrriieennddllyy..MMeennuuAAddaapptteerr"" //>> <<aaddaapptteerr ccoonnttrroollTTyyppee==""SSyysstteemm..WWeebb..UUII..WWeebbCCoonnttrroollss..TTrreeeeVViieeww"" aaddaapptteerrTTyyppee==""CCSSSSFFrriieennddllyy..TTrreeeeVViieewwAAddaapptteerr"" //>> <<aaddaapptteerr ccoonnttrroollTTyyppee==""SSyysstteemm..WWeebb..UUII..WWeebbCCoonnttrroollss..DDeettaaiillssVViieeww"" aaddaapptteerrTTyyppee==""CCSSSSFFrriieennddllyy..DDeettaaiillssVViieewwAAddaapptteerr"" //>> …… <<//ccoonnttrroollAAddaapptteerrss>> <<//bbrroowwsseerr>> <<bbrroowwsseerr iidd==""WW33CC__VVaalliiddaattoorr"" ppaarreennttIIDD==""ddeeffaauulltt"">> <<iiddeennttiiffiiccaattiioonn>> <<uusseerrAAggeenntt mmaattcchh==""^^WW33CC__VVaalliiddaattoorr"" //>> <<//iiddeennttiiffiiccaattiioonn>> <<ccaappaabbiilliittiieess>> <<ccaappaabbiilliittyy nnaammee==""bbrroowwsseerr"" vvaalluuee==""WW33CC VVaalliiddaattoorr"" //>> <<ccaappaabbiilliittyy nnaammee==""eeccmmaaSSccrriippttVVeerrssiioonn"" vvaalluuee==""11..22"" //>> …… <<ccaappaabbiilliittyy nnaammee==""ttaaggWWrriitteerr"" vvaalluuee==""SSyysstteemm..WWeebb..UUII..HHttmmllTTeexxttWWrriitteerr"" //>> <<ccaappaabbiilliittyy nnaammee==""ww33ccddoommvveerrssiioonn"" vvaalluuee==""11..00"" //>> <<//ccaappaabbiilliittiieess>> <<//bbrroowwsseerr>> <<//bbrroowwsseerrss>>
  • 21.
    CCSSSS FFrriieennddllyy AAddaapptteerrss SSii ttrraattttaa ddii uunnaa sseerriiee ddii AAddaapptteerrss aappppoossiittaammeennttee ccrreeaattii ppeerr ffaarr ffrroonnttee aallllaa dduupplliiccee nneecceessssiittàà ddaa ppaarrttee ddeeggllii wweebb--ddeessiiggnneerr ddii aavveerree ccoonnttrroollllii cchhee rreennddeerriizzzziinnoo uunn llaayyoouutt ccoorrrreettttoo ee ppootteerr ssppeecciiffiiccaarree ttuuttttii ggllii aattttrriibbuuttii ddii ssttiillee ppeerr ii ccoonnttrroollllii uuttiilliizzzzaannddoo ii ffooggllii ddii ssttiillee iinnvveeccee cchhee rriiccoorrrreerree aadd aattttrriibbuuttii sseerrvveerr--ssiiddee..  TTuuttttii ggllii aattttrriibbuuttii ddii ssttiillee vveennggoonnoo iinnccaappssuullaattii iinn uunnaa sstteessssaa ccllaassssee CCSSSS,, iinn qquueessttoo mmooddoo èè ppoossssiibbiillee ccrreeaarree ssttiillii ddiivveerrssii aassssoocciiaattii aa ccllaassssii ddiivveerrssee..  EE’’ ppoossssiibbiillee ssppeecciiffiiccaarree iill sseett ddii ssttiillii aassssoocciiaattoo aadd uunn ppaarrttiiccoollaarree ccoonnttrroolllloo rriiccoorrrreennddoo aallll’’aattttrriibbuuttoo CCssssSSeelleeccttoorrCCllaassss..  PPeerr ggaarraannttiirree iill ccoorrrreettttoo wwiirriinngg ddeeggllii eevveennttii ((ggeenneerraattii ddaaii ccoonnttrroollllii aaddaattttaattii)) llee ffuunnzziioonnii ddii ggeessttiioonnee ddeevvoonnoo eesssseerree ssppeecciiffiiccaarree rriiccoorrrreennddoo aadd aattttrriibbuuttii cchhee iinniizziinnoo ccoonn iill pprreeffiissssoo OOnnAAddaapptteedd ((eexx ppeerr uunnaa ttrreeeevviieeww:: OOnnSSeelleecctteeddNNooddeeCChhaannggeedd==""SSeelleecctteeddNNooddeeCChhaannggeedd““ OOnnAAddaapptteeddSSeelleecctteeddNNooddeeCChhaannggeedd==""SSeelleecctteeddNNooddeeCChhaannggeedd““))..  AAllccuunnii eevveennttii ttiippiiccii ddii ddeetteerrmmiinnaattii ccoonnttrroollllii ppoottrreebbbbeerroo nnoonn eesssseerree ppiiùù ssuuppppoorrttaattii aa ccaauussaa ddeellll’’oovveerrrriiddee ddeellllee ffuunnzziioonnii ddii ggeenneerraazziioonnee ddeeggllii eevveennttii ddii ppoossttbbaacckk ((eexx:: ggllii eevveennttii eexxppaanndd ee ccoollllaappssee ddeellllaa ttrreeeevviieeww))..
  • 22.
    CCSSSS FFrriieennddllyy AAddaapptteerrss-- UUttiilliizzzzoo • Istallare lo Starter Kit (http://www.asp.net/cssadapters/). • Creare un nuovo sito web mediante i template messi a disposizione dallo Starter Kit. • Copiare il file CssFriendlyAdapters.browser nella directory App_Browsers del sito di destinazione. • Copiare il contenuto della directory Adapters situata in App_Code nella corrispondnete posizione nel sito di destinazione. • Copiare la directory CSS situata nella root del sito nella corrispondente posizione del sito di destinazione. • Copiare la directory Javascript situata nella root del sito nella corrispondente posizione del sito di destinazione. • Inserire in ogni pagina che deve utlizzare gli adapters (meglio se nelle master page) i link ai file css comuni utilizzando le direttive: <link runat="server" rel="stylesheet" href="~/CSS/Import.css" type="text/css" id="AdaptersInvariantImportCSS" /> <!--[if lt IE 7]> <link runat="server" rel="stylesheet" href="~/CSS/BrowserSpecific/IEMenu6.css" type="text/css" id="IEMenu6CSS" /> <![endif]--> • Creare gli opportuni fogli di stile nella cartella App_Themes. • Settare nel web.config l’elemento xhtmConformance a strict (<xhtmlConformance mode="Strict"/>) in modo da indicare all’engine Asp.NET di renderizzare gli elemnti in conformità allo standard xhtml.
  • 23.
    CCSSSS FFrriieennddllyy AAddaapptteerrss EEsseemmppiioo HHTTMMLL <<!!DDOOCCTTYYPPEE hhttmmll PPUUBBLLIICC ""--////WW33CC////DDTTDD XXHHTTMMLL 11..00 SSttrriicctt////EENN"" ""hhttttpp::////wwwwww..ww33..oorrgg//TTRR//xxhhttmmll11//DDTTDD//xxhhttmmll11--ssttrriicctt..ddttdd"">> <<hhttmmll xxmmllnnss==""hhttttpp::////wwwwww..ww33..oorrgg//11999999//xxhhttmmll"">> <<hheeaadd rruunnaatt==""sseerrvveerr"">> <<ttiittllee>>UUnnttiittlleedd PPaaggee<<//ttiittllee>> <<lliinnkk rruunnaatt==""sseerrvveerr"" rreell==""ssttyylleesshheeeett"" hhrreeff==""~~//CCSSSS//IImmppoorrtt..ccssss"" ttyyppee==""tteexxtt//ccssss"" iidd==""AAddaapptteerrssIInnvvaarriiaannttIImmppoorrttCCSSSS"" //>> <<!!----[[iiff lltt IIEE 77]]>> <<lliinnkk rruunnaatt==""sseerrvveerr"" rreell==""ssttyylleesshheeeett"" hhrreeff==""~~//CCSSSS//BBrroowwsseerrSSppeecciiffiicc//IIEEMMeennuu66..ccssss"" ttyyppee==""tteexxtt//ccssss"" iidd==""IIEEMMeennuu66CCSSSS"" //>> <<!![[eennddiiff]]---->> <<//hheeaadd>> <<bbooddyy>> <<ffoorrmm iidd==""ffoorrmm11"" rruunnaatt==""sseerrvveerr"">> <<ddiivv iidd==""llaayyoouutt"">> …… <<aasspp::MMeennuu CCssssSSeelleeccttoorrCCllaassss==""MMyyMMeennuu"" IIDD==""mmnnuuHHoorriizzoonnttaall"" rruunnaatt==""sseerrvveerr"" DDaattaaSSoouurrcceeIIDD==""xxmmllHHoorriizzoonnttaall"" OOrriieennttaattiioonn==""HHoorriizzoonnttaall"">> <<DDaattaaBBiinnddiinnggss>> <<aasspp::MMeennuuIItteemmBBiinnddiinngg DDaattaaMMeemmbbeerr==""ssiitteeMMaappNNooddee"" TTeexxttFFiieelldd==""ttiittllee"" NNaavviiggaatteeUUrrllFFiieelldd==""uurrll"" //>> <<//DDaattaaBBiinnddiinnggss>> <<//aasspp::MMeennuu>>
  • 24.
    CCSSSS FFrriieennddllyy AAddaapptteerrss EEsseemmppiioo CCSSSS .MyMenu { background-color: #B9C7E4; width: 100%; } .MyMenu ul.AspNet-Menu /* Tier 1 */ { left: 160px; } .MyMenu ul.AspNet-Menu ul /* Tier 2 */ { width: 10em; top: 100%; left: 0; border: 1px solid #003398; } .MyMenu ul.AspNet-Menu ul ul /* Tier 3+ */ { top: 0em; left: 10em; border: 1px solid #003398; } .MyMenu li /* all list items */ { width: 10em; background-color: #B9C7E4; color: #003398; } .MyMenu li:hover, /* list items being hovered over */ .MyMenu li.AspNet-Menu-Hover { background: Black; } .MyMenu a, /* all anchors and spans (nodes with no link) */ .MyMenu span { color: #003398; padding: 4px 2px 4px 8px; }
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
    LLiimmiittii ddeeggllii AAddaapptteerrCCoonnttrroollss  MMoollttii ddeeggllii aattttrriibbuuttii ddii ssttiillee ee ffoorrmmaattttaazziioonnee iimmppoossttaabbiillii nneell ddeessiiggnneerr vveennggoonnoo ccoommpplleettaammeennttee iiggnnoorraattii,, ttuuttttaa llaa ffoorrmmaattttaazziioonnee vviieennee ffaattttaa mmeeddiiaannttee ccllaassssii ccssss..  NNoonn ttuuttttii ggllii eevveennttii ssttaannddaarrdd ddii uunn ccoonnttrroolllloo vveennggoonnoo ggeessttiittii ((ggllii eevveennttii ccoollllaappssee eedd eexxppaanndd ddii uunnaa ttrreeeevviieeww aadd eesseemmppiioo))..  NNeecceessssiittaannoo aannccoorraa ddii aallccuunnee ppiiccccoollee ccoorrrreezziioonnii ppeerr ggeenneerraarree ccooddiiccee ccoommpplleettaammeennttee ‘‘aacccceessssiibbiillee’’ ssoopprraattttuuttttoo iinn ccaassoo ddii rreennddeerriinngg ddii lliissttee ddii eelleemmeennttii pprriivvee ddii ccoonntteennuuttoo..
  • 31.