Controlli server Web ASP.NET e funzionalità del browser
Aggiornamento: novembre 2007
Le funzionalità supportate dipendono dai browser e dalle diverse versioni di uno stesso browser. I controlli server ASP.NET consentono di determinare automaticamente il browser che ha richiesto la pagina e di eseguire il rendering del codice appropriato per tale browser. Non è tuttavia possibile eseguire il rendering di alcune funzionalità dei controlli in browser meno recenti, pertanto è opportuno esaminare l'output delle pagine nel maggior numero di tipi di browser diversi in modo da verificare che siano tutte visualizzate come desiderato in tutti i browser.
Rilevamento automatico dei tipi di browser
Per impostazione predefinita, il framework di pagina ASP.NET determina le capacità del browser interpretando le informazioni di agente utente passate dal browser al server durante una richiesta. Queste informazioni sono disponibili come proprietà UserAgent dell'oggetto HttpRequest. La pagina esegue una corrispondenza delle informazioni di agente utente con gli elementi agente contenuti nei file di configurazione e di definizione del browser.
Nota: |
---|
La sezione browserCaps dei file di configurazione (.config) è obsoleta in .NET Framework versione 2.0. Per garantire la compatibilità con le versioni precedenti, le impostazioni di configurazione di questa sezione sono ancora supportate se impostate a livello di applicazione, ma vengono unite alle informazioni contenute nei file di definizione del browser (con estensione browser), che si trovano nella cartella %SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers a livello di computer e in tutte le cartelle App_Browser esistenti a livello di applicazione. Per ulteriori informazioni, vedere Schema del file di definizione del browser (elemento browsers). |
Quando la pagina trova una corrispondenza tra le informazioni di agente utente corrente e gli agenti utente elencati nel file, potrà leggere le corrispondenti funzionalità del browser e determinare così se è disponibile il supporto di script, stili, frame e così via. In base a queste funzionalità, i controlli della pagina effettueranno il rendering dei controlli Web utilizzando linguaggi markup adeguati, come XHTML, HTML 3.2 e così via. Quando ASP.NET effettua il rendering HTML, potrà decidere se eseguirlo su elementi HTML di versioni recenti (conformi ai fogli di stile CSS) o precedenti (non conformi ai fogli di stile CSS). Per i browser meno recenti, ASP.NET rende le informazioni di formattazione mediante gli elementi (ad esempio, un elemento font) anziché mediante gli stili CSS.
Ignorare il rilevamento del tipo di browser
Se si desidera controllare direttamente il rendering della pagina, anziché affidarsi al rilevamento automatico del browser, sarà possibile impostare la proprietà ClientTarget della pagina. È possibile impostare la proprietà in modo dichiarativo, come attributo della direttiva @ Page della pagina, oppure a livello di codice.
Il valore della proprietà ClientTarget è un alias del tipo di browser per il quale si desidera effettuare il rendering della pagina. Ad esempio, è possibile utilizzare un alias uplevel per fare in modo che la pagina effettui il rendering per Microsoft Internet Explorer 6.0. L'alias deve essere definito nella sezione clientTarget del file di configurazione. Le impostazioni predefinite sono ie5, ie4, uplevel e downlevel.
Se viene specificato l'alias downlevel, il rendering della pagina sarà sempre compatibile con lo standard HTML 3.2, a prescindere dal browser che ha richiesto la pagina. Se invece si specifica uplevel, il rendering della pagina verrà effettuato con gli attributi di stile CSS anche per i browser delle versioni precedenti.
È possibile creare definizioni di browser personalizzate definendo alias aggiuntivi nei file Machine.config o Web.config. Per ulteriori informazioni, vedere Impostazioni di configurazione di ASP.NET.
Controlli e funzionalità ASP.NET con supporto AJAX
Le funzionalità con supporto AJAX in ASP.NET sono compatibili con la maggior parte dei browser moderni e vengono eseguite con le impostazioni di sicurezza predefinite di tali browser. Tali controlli e funzionalità richiedono che il browser sia in grado di eseguire lo script client. I controlli UpdatePanel e ScriptManager sono esempi di controlli con supporto AJAX. Per un elenco dei browser compatibili e delle impostazioni di sicurezza consigliate per i controlli e le funzionalità con supporto AJAX, vedere Impostazioni di sicurezza del browser per le pagine ASP.NET con supporto AJAX.
Nota: |
---|
È possibile utilizzare le proprietà esposte dall'oggetto HttpBrowserCapabilities per determinare se un browser supporta ECMAScript (JScript, JavaScript). |
Per i cenni preliminari sulle funzionalità AJAX di ASP.NET, vedere Aggiunta di funzionalità AJAX e client.
Script client
Alcune funzionalità dei controlli server ASP.NET dipendono dalla possibilità di eseguire script client. Lo script client viene generato automaticamente e inviato nell'ambito della pagina purché nel browser sia supportata l'esecuzione di script. È tuttavia anche possibile che l'esecuzione degli script sia stata disattivata nei browser e che pertanto non sia possibile sfruttare a pieno le potenzialità del controllo. Per ulteriori informazioni, vedere Script client nelle pagine Web ASP.NET.
Utilizzo di versioni precedenti dei browser
I browser si dividono in due gruppi: versioni recenti e versioni precedenti. Tali gruppi definiscono il tipo di supporto nativo offerto da un browser e in genere determinano la modalità di presentazione e di funzionamento di una pagina Web.
Le versioni recenti dei browser supportano in genere almeno i seguenti elementi:
ECMAScript (JScript, JavaScript) versione 1.2.
HTML versione 4.0.
Il modello Microsoft Document Object Model (MSDOM).
I fogli di stile CSS (Cascading Style Sheets).
I browser e le periferiche client di livello "inferiore" supportano solo:
- HTML versione 3.2
Di seguito sono riportate le proprietà dei controlli server di cui viene eseguito il rendering in modo diverso nei browser di livello inferiore e superiore.
Proprietà dei controlli server |
Comportamento del rendering nei browser di livello superiore e inferiore |
---|---|
AccessKey |
Questa proprietà non funziona in alcun browser di livello inferiore e per alcun controllo. Non corrisponde a una proprietà di HTML 4.0 ed è utilizzabile solo con Internet Explorer 4 o versioni successive. |
BackColor |
Questa proprietà è utilizzabile nei browser di livello inferiore solo per alcuni controlli: Table, Panel, GridView, Calendar e ValidationSummary. Funziona inoltre per CheckBoxList, RadioButtonList e DataList se il layout è in un controllo Table. In generale, solo i controlli che vengono resi come elementi table possono produrre un colore di sfondo in HTML 3.2, mentre quasi tutto il resto può essere prodotto in HTML 4.0. Per i controlli che eseguono il rendering di elementi span, inclusi i controlli Label, i controlli di convalida e i controlli di elenco in modalità Flow, BackColor funziona in Internet Explorer 5 e versioni successive ma non in Internet Explorer 4.0. |
BorderColor |
Questa proprietà funziona nei browser di livello inferiore solo per gli stessi controlli basati su tabella, come BackColor. Tale proprietà viene tuttavia visualizzata come attributo bordercolor, non incluso nello standard HTML 3.2. Tale attributo è supportato in alcuni browser, compreso Internet Explorer 3.0 e versioni successive, ma non in tutti. |
BorderStyle |
Questa proprietà non funziona in alcun browser di livello inferiore Non è disponibile alcun equivalente per tale controllo in HTML 3.2. |
BorderWidth |
Questa proprietà funziona solo in controlli che effettuano il rendering come elemento table HTML (Table, Panel, GridView e Calendar) oppure come elemento img (Image e AdRotator). BorderWidth funziona solo nei browser di livello inferiore se è specificato in pixel; in caso contrario, il rendering verrà sempre effettuato come border=1 o border=0. Inoltre, BorderWidth funziona solo con i controlli basati su tabella se GridLines è impostato su un valore diverso da None. in quanto non esiste alcun metodo per specificare un bordo senza linee della griglia in HTML 3.2. Per i controlli che eseguono il rendering degli elementi span, inclusi i controlli Label, i controlli di convalida e i controlli di elenco in modalità Flow, BorderWidth funziona in Internet Explorer 5 o versioni successive ma non in Internet Explorer 4.0. |
CssClass |
Il rendering di questa proprietà viene sempre eseguito come attributo di class, indipendentemente dal browser. L'attributo class viene riconosciuto nella maggior parte dei browser di livello superiore. |
Enabled |
Questa proprietà consente di specificare se un controllo è in grado di generare i propri eventi e funzioni. In Internet Explorer 4.0 o versioni successive, se si imposta Enabled su false, il controllo risulterà non disponibile e non modificabile e verrà utilizzato l'attributo disabled=true. |
Font-Bold, Font-Italic, Font-Strikeout e proprietà simili |
Il rendering di queste proprietà viene effettuato come attributi style per i browser di livello superiore (ad esempio, Font-Weight per il grassetto e Font-Style per il corsivo) e come elementi indipendenti (ad esempio, b e i) per i browser di livello inferiore. |
Font-Size |
Questa proprietà funziona in browser di livello inferiore per tutti i controlli solo se vengono utilizzate dimensioni di carattere denominate (Small, Smaller e così via). Nei browser di livello superiore, il rendering di questa proprietà viene effettuato come un attributo style; nei browser di livello inferiore, il rendering viene effettuato come un elemento font. |
Font-Overline |
Questa proprietà non funziona in alcun browser di livello inferiore. |
ForeColor |
Questa proprietà funziona nei browser di livello inferiore per tutti i controlli, ad eccezione di Image, AdRotator, HyperLink eLinkButton. Per le versioni meno recenti dei browser, ForeColor viene reso mediante gli elementi font. |
Height |
Questa proprietà non funziona nei browser di livello inferiore per i controlli Label, i controlli di convalida, i controlli HyperLink o i controlli LinkButton. Height non funziona inoltre con i controlli CheckBoxList, RadioButtonList e DataList se il layout per questi controlli è impostato su Flow. È possibile utilizzare solo misure in pixel ed espresse in percentuali. Per i controlli basati su tabella, non viene eseguito il rendering dell'altezza nelle tabelle interne per i browser di livello inferiore in quanto l'attributo Height è obsoleto in HTML 4.01. Ciò causa un aspetto leggermente diverso tra il rendering di livello superiore e quello di livello inferiore. La differenza più ovvia si avrà se BackColor è impostato sulla proprietà SideBarStyle: nei browser di livello superiore BackColor sembra essere la lunghezza intera della colonna, mentre nei browser di livello inferiore sarà lungo quanto basta per contenere i pulsanti di testo. |
TabIndex |
Questa proprietà non funziona in alcun browser di livello inferiore e per alcun controllo. Non corrisponde a una proprietà di HTML 4.0, pertanto è utilizzabile solo con Internet Explorer 4 o versioni successive. |
ToolTip |
Questa proprietà non funziona in alcun browser di livello inferiore |
Width |
Questa proprietà non è presente nei browser di livello inferiore per Label, HyperLink, LinkButton o i controlli di convalida. Inoltre, Width non funziona con i controlli CheckBoxList, RadioButtonList e DataList se il layout è impostato su Flow. È possibile utilizzare solo misure in pixel e misure espresse in percentuali. |
Vedere anche
Attività
Procedura: rilevare tipi di browser in pagine Web ASP.NET
Procedura dettagliata: sviluppo e utilizzo di un controllo server personalizzato
Riferimenti
Elemento clientTarget (schema delle impostazioni ASP.NET)