ASP.NET: Web Form Controls e gli eventi

Corso ASP.NET: quinta puntata

Esempio funzionante | Sorgente | Scarica il sorgente (zip)

I Web Form Controls sono dei tipi di controllo alternativi rispetto agli Html Controls.

Mentre gli Html Controls sono il modo preferibile per convertire con velocità un’applicazione ASP in una ASP.NET, i Web Form Controls sono più complessi e completi. È possibile per esempio realizzare un checkbox che effettua il submit di una form non appena viene premuto.

In particolare, ogni controllo Web Form può generare più tag Html e anche codice Javascript.

I Web Form Controls si riconoscono perché preceduti da un prefisso (namespace) di tipo “asp” seguito dai due punti.

Vantaggi

  • la nomenclatura delle proprietà è coerente (a differenza di quello che succede con gli attributi dei tag Html)
  • consentono di realizzare con un solo oggetto compiti complessi
  • si astrae dal codice Html della pagina preoccupandosi invece delle logiche di programmazione

Un esempio

Il prossimo esempio visualizza una form realizzata con controlli di tipo Web Form.
Sono visualizzati 4 controlli di tipo asp:TextBox.

4 controlli TextBox
4 controlli di tipo TextBox

Con lo stesso controllo ASP.NET sono stati realizzati quelli che in Html sono due tag diversi: <input> e <textarea>.

In particolare i 4 controlli realizzano:

  • un textarea senza barre di scorrimento
  • un input box di tipo testo
  • un input box di tipo password
  • un textarea con barre di scorrimento

Il codice che li genera è il seguente:

TextBox 1

 41 <asp:TextBox runat="server"
 42 id="txtTextBox1"
 43 Text="Primo TextBox"
 44 BackColor="#99ccff"
 45 TextMode="MultiLine"
 46 Rows="5"
 47 OnTextChanged="txtTextBox_Changed" />

TextBox 2

 53  <asp:TextBox runat="server"
 54  id="txtTextBox2"
 55  Text="Secondo TextBox"
 56  TextMode="SingleLine"
 57  AutoPostBack="true"
 58  OnTextChanged="txtTextBox_Changed"/>

TextBox 3

 64  <asp:TextBox runat="server"
 65  id="txtTextBox3"
 66  TextMode="Password"/>

TextBox 4

 72  <asp:TextBox runat="server"
 73  id="txtTextBox4"
 74  TextMode="MultiLine"
 75  ScrollBars="Both"
 76  Wrap="false"
 77  ReadOnly="true" />

Questi controlli usano un insieme di proprietà davvero coerente. Ad esempio:

  • TextMode indica il tipo di tag da creare (input di tipo testo, password o textarea)
  • Text è l’eventuale testo da visualizzare nel controllo

Gli eventi

Come gli Html Controls, anche i Web Form Controls dispongono di un modello di programmazione ad oggetti ed è pertanto possibile programmarne gli eventi. Anche in questo caso le potenzialità dei Web Form Controls si dimostrano superiori rispetto agli Html Controls.

L’evento OnTextChanged è eseguito quando il testo in uno dei primi due TextBox è modificato.

Provate ad esempio a posizionarvi sul primo TextBox e a modificare la scritta “Primo TextBox“. A questo punto premete il pulsante di Invio.

Vi compare una pagina con la scritta “È cambiato il valore di txtTextBox1”.

La pagina di risposta dopo il submit
La pagina di risposta dopo aver cambiato il testo e premuto submit

Provate a fare la stessa cosa con il secondo TextBox. Questa volta però non premete il pulsante di invio, ma spostatevi con il mouse o con il tasto tab in un altro controllo. Noterete che il submit della form è realizzato automaticamente. La causa è la proprietà AutoPostBack, che se posta a true provoca l’invio automatico della form.

È un metodo comodo per simulare quanto avviene con le tradizionali applicazioni desktop, anche se dobbiamo prestare attenzione al fatto che la comunicazione tra client e server è destinata ad intensificarsi.

Come abbiamo già avuto modo di studiare, le funzionalità date dalla proprietà AutoPostBack sono realizzate da codice Javascript lato client.

Conclusione

I Web Form Control superano i limiti dei tag Html perché rendono disponibile un modello ad oggetti coerente e funzionalità più complete. Lo sviluppatore non si preoccupa dell’Html generato, ma utilizza controlli simili a quelli disponibili nella tradizionale programmazione Windows.

Colori e immagini

Questo articolo fa parte di un corso gratuito di design web ospitato su questo sito.

Colori – I colori sicuri, la retinatura, l’usabilità

Gli schermi dei computer più recenti permettono di vedere moltissimi colori, ma non tutti possiedono un computer recente e qualcuno ha un computer con scheda video potente ma con le vecchie impostazioni del monitor.

Non siamo certi quanti e quali colori appaiono nello schermo di ogni utente, così dobbiamo ancora ragionare secondo gli standard.

Quasi tutti gli schermi permettono di vedere 256 colori (ad ogni pixel vengono dedicati 8 bit di memoria).

I browser gestiscono i colori basandosi su una tavolozza da 8 bit. 256 è il limite massimo della tavolozza di colori, ma le versioni dei sistemi operativi riservano 40 colori per l’interfaccia, perciò 216 sono i colori sicuri per tutti i browser.

Photoshop 6 contrassegna i colori sicuri con un puntino nella palette Colore, ma se si usa Salva per il web è sufficiente controllare i colori dalla finestra.

Retinatura

E’ il metodo più usato per ridurre le immagini ai colori sicuri, cioè si sovrappongono dei pixel di colore diverso per riunirli in un terzo e unico colore. Un pixel bianco e uno nero daranno l’illusione di valori di grigi, senza alterare troppo l’immagine nel suo complesso.

La retinatura dev’essere realizzata con i 216 colori standard, poiché se si scelgono colori diversi dalla palette di riferimento, il browser non li riconosce e legge l’immagine secondo le impostazioni standard.

L’usabilità con i colori

I colori, come in qualsiasi altro media, possono facilitare la lettura, la comprensione e la navigazione. Si legge più facilmente uno schermo se il testo è scuro su sfondo chiaro, quindi se i contrasti sono forti e netti.

Da evitare un testo rosa su sfondo verde, poiché non soltanto è difficile da leggere e stanca gli occhi, ma i daltonici non potranno riconoscere il testo.

Per le regole di accessibility del web rimandiamo ad un corso in preparazione.

La directory di navigazione è solitamente di colore diverso dalla parte dedicata alle informazioni, per una comprensione immediata della pagina (se vuoi saperne di più nella lezione precedente abbiamo parlato d’impaginazione).

Immagini – I file Gif e Jpeg, quando usarli, come usarli, le strategie, le compressioni

I formati di file Web principali sono GIF e JPEG, vediamo le caratteristiche e come usarli.

File GIF:

  • Limitati a 256 colori
  • Si possono comprimere, rendendoli molto leggeri, senza perdere di qualità dell’immagine
  • Supportano il colore trasparente, per far emergere lo stesso colore di sfondo della pagina
  • Sono consigliabili per immagini schematiche con forti contrasti di colori
  • Usali per i bottoni di navigazione e imagemap

File JPEG:

  • Supportano 16,8 milioni di colori (24 bit per ogni pixel)
  • Possono essere molto compresse, ma a discapito della qualità
  • Compressione a perdita, quindi i dati eliminati dopo la compressione sono perduti
  • Compressione ideale per immagini con pochi contrasti e senza bordi netti
  • Usali per fotografie, immagini di grandi dimensioni e di alta qualità

Immagini interlacciate

Le immagini sono le più lenti da caricare, specie con i modem più diffusi, perciò è utile ridurre i tempi di attesa con l’interlacciamento.

E’ un metodo di composizione delle immagini GIF o JPEG che compaiono sullo schermo a bassa risoluzione e lentamente diventano più nitide. Non abbiamo bisogno di aspettare che si compongano interamente per capire cosa raffigurano e decidere così se continuare o fermarsi.

Le GIF di navigazione sono leggere, piccole e non hanno bisogno di essere interlacciate, poiché sarebbero più lente da caricare.

Consigliabile, invece, interlacciare le immagini JPEG, per le loro stesse caratteristiche.
In Photoshop 6 nella finestra Salva per il web c’è l’opzione per l’interlacciamento

Animazioni GIF – Quando usarle e come

Le animazioni posso essere utili per far vedere un’evoluzione o anche solo un oggetto a tutto tondo (consigliabile per l’e-commerce).

La maggior parte delle animazioni richiede un plug-in particolare per poter essere visualizzata, eccetto le animazioni GIF. Queste sono la combinazioni di immagini GIF in un unico file per creare una successione automatica delle immagini.

Si può impostare l’immagine GIF in modo che l’animazione si riproduca continuamente (i banner) o solo una volta e si può anche stabilire la durata di ogni fotogramma.

Un’animazione GIF, però, non offre controlli all’utente, che deve subire l’animazione fino alla fine senza possibilità d’interromperla, inoltre questo tipo di file non effettua la compressione tra fotogrammi.

Se un’animazione GIF è la combinazione di 5 immagini da 18 KB l’una, l’animazione sarà di 90 KB.
Troppe animazioni, specie se vicine al testo, disturbano l’attenzione dei lettori, quindi è consigliabile un uso attento.

E’ meglio che le animazioni siano visibili da una finestra secondaria che l’utente potrà chiudere quando vuole.

ASP.NET: Html Server Controls e gli eventi – Codice sorgente dell’esempio

htmlAnchor.aspx – Prova l’esempio [nuova finestra]

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 
  4 <%@Page Language="VB"%>
  5 <%@Register TagPrefix="ANet" TagName="Footer" Src="includes/footer.ascx"%>
  6 
  7 <!
  8 # nome: HtmlAnchor.aspx
  9 # scritto da: Antonio Volpon
 10 # data creazione: 25 Ottobre 2001
 11 # ultima modifica: 25 Ottobre 2001
 12 # copyright: Antonio Volpon
 13 >
 14 
 15 <script language="vb" runat="server">
 16 
 17 Sub Page_Load(sender as Object, e as EventArgs)
 18   link.HRef = "https://fucinaweb.com"
 19   link.Title = "La pagina di ingresso di FucinaWeb.com"
 20   link.Target = "_blank"
 21 End Sub
 22 
 23 Sub linkevento_Click(Source As Object, E as EventArgs)
 24    risposta.InnerHtml = "Bravo, hai cliccato!"
 25 End Sub
 26 
 27 </script>
 28 
 29 <html>
 30   <head>
 31     <link rel="stylesheet" href="css/aspnet.css" type="text/css">
 32     </link>
 33     <title>Gli HtmlControls: HtmlAnchor</title>
 34   </head>
 35   <body>
 36     <div class="titolo">
 37       Gli HtmlControls: HtmlAnchor
 38     </div>
 39     
 40     <hr noshade="true" size="1" width="100%" />
 41 
 42     <!– Esempio "link da seguire" –>
 43       
 44     <p>Clicca sul link per caricare una pagina di esempio.</p>
 45 
 46 
 47     <a id="link" runat="server">
 48       Home Page di FucinaWeb.com
 49     </a>
 50 
 51     <br /><br />
 52     <hr noshade="true" size="1" width="100%" />
 53     
 54     <!– Esempio "eventi in postback" –>
 55 
 56    <form method="post" runat="server">
 57 
 58     <p>Oppure qui per un…</p>
 59     
 60  <a OnServerClick="linkevento_Click" runat="server" id="linkevento">…esempio di postback</a>
 61      
 62      <br /><br /><br />
 63      
 64  <div id="risposta" class="risposta" runat="server"></div>
 65 
 66  </form>
 67 
 68  <ANet:Footer id="Menu" runat="server" />
 69 
 70   </body>
 71 </html>