<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>ASP.NET</title>
        <link>http://blogs.ugidotnet.org/angellaa/category/ASP.NET.aspx</link>
        <description>ASP.NET</description>
        <language>it-IT</language>
        <copyright>Andrea Angella</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Utilizzare il tag &amp;lt;link&amp;gt; in pagine master annidate</title>
            <link>http://blogs.ugidotnet.org/angellaa/archive/2008/05/16/utilizzare-il-tag-ltlinkgt-in-pagine-master-annidate.aspx</link>
            <description>&lt;p&gt;Mi sono imbattuto in un problema nell'utilizzo del tag link all'interno di pagine master annidate. Ho fatto diverse prove e sono giunto alla conclusione che probabilmente è un bug nell'implementazione di ASP.NET.   &lt;br /&gt;Ho scritto un post nel forum &lt;a title="Link a fogli di stile in pagine master a" href="http://forum.ugidotnet.org/b.asp?m=69042"&gt;Link a fogli di stile in pagine master&lt;/a&gt; .    &lt;br /&gt;Mi piacerebbe sentire i vostri commenti.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/angellaa/aggbug/92702.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Angella</dc:creator>
            <guid>http://blogs.ugidotnet.org/angellaa/archive/2008/05/16/utilizzare-il-tag-ltlinkgt-in-pagine-master-annidate.aspx</guid>
            <pubDate>Fri, 16 May 2008 16:23:23 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/angellaa/archive/2008/05/16/utilizzare-il-tag-ltlinkgt-in-pagine-master-annidate.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/angellaa/comments/commentRss/92702.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/angellaa/services/trackbacks/92702.aspx</trackback:ping>
        </item>
        <item>
            <title>[MCTS] - Il primo passo &amp;egrave; compiuto...</title>
            <link>http://blogs.ugidotnet.org/angellaa/archive/2008/03/26/91892.aspx</link>
            <description>&lt;p align="justify"&gt;Ancora non riesco a crederci, oggi ho superato l'esame di certificazione &lt;a href="http://www.microsoft.com/learning/exams/70-528.mspx" target="_blank"&gt;"MCTS Microsoft .NET Framework 2.0 - Web Based Client Development"&lt;/a&gt;  !!!!!&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/angellaa/WindowsLiveWriter/Ilprimopassocompiuto_13408/web_4.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 20px 0px 0px; border-right-width: 0px" height="244" alt="web" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/angellaa/WindowsLiveWriter/Ilprimopassocompiuto_13408/web_thumb_1.jpg" width="200" align="left" border="0" /&gt;&lt;/a&gt; E' da circa due anni, se non di più, che mi interesso di ASP.NET e in generale del framework .NET sottraendo spesso tempo allo studio universitario e     &lt;br /&gt;probabilmente anche un pò alla vita sociale. Ma che ci posso fare d'altronde l'informatica è la mia più grande passione, io mi diverto, non faccio fatica.     &lt;br /&gt;Durante tutto questo tempo ho letto diversi libri su .NET e ASP.NET come potete vedere dalla mia &lt;a href="http://www.anobii.com/people/angellaa" target="_blank"&gt;libreria online&lt;/a&gt; e non ho mai smesso di tenermi aggiornato     &lt;br /&gt;sulle nuove e recenti tecnologie. Ho iniziato ad interessarmi al programma di certificazione Microsoft nel luglio 2006 quando ho acquistato il libro ufficiale di     &lt;br /&gt;preparazione all'esame che come tutti sanno è solo una superficiale presentazione dei contenuti che si devono afferrare.&lt;/p&gt;  &lt;p align="justify"&gt;Il 26 febbraio 2008 ho ripreso a seguire i nuovi esami universitari. Uno di questi esami è "Architetture Web e Infrastrutture per il commercio elettronico" il    &lt;br /&gt;quale prevede la realizzazione di un sito di media complessità in cui si dovranno curare attentamente aspetti legati all'usabilità dell' interfaccia e aspetti legati     &lt;br /&gt;a problemi relativi alla sicurezza. L'ideazione, progettazione e realizzazione di questa applicazione web deve essere realizzata in gruppi di almeno due persone.     &lt;br /&gt;Io ho già trovato un ottimo compagno di lavoro e si chiama &lt;a href="http://nevi.altervista.org/" target="_blank"&gt;Vincenzo&lt;/a&gt;. La coppia Vincenzo - Andrea si è rivelata vincente per il successo dei progetti realizzati     &lt;br /&gt;durante il primo semestre (&lt;a href="http://nevi.altervista.org/progetti.php" target="_blank"&gt;Scaricabili qui liberamente&lt;/a&gt;) e spero di ottenere belle soddisfazioni anche nei successivi progetti che realizzeremo insieme.     &lt;br /&gt;    &lt;br /&gt;Le conoscenze sullo sviluppo di applicazioni web, apprese durante il percorso universitario riguardano HTML, CSS, Javascript e PHP. Motivato dalla volontà di     &lt;br /&gt;realizzare questo nuovo progetto utilizzando ASP.NET ho deciso di creare, e così ho fatto, un evento di presentazione sulla piattaforma .NET e     &lt;br /&gt;la tecnologia ASP.NET con lo scopo di illustrare al mio compagno tutte le potenzialità che lo sviluppatore può avere nelle sue mani e quindi convincerlo a     &lt;br /&gt;seguire questa strada. Per realizzare la presentazione e per essere convincente ho dovuto risfogliare (con piacere) molti libri che avevo letto e non solo. In pratica è quasi tutto il mese di Marzo che smanecchio su pagine aspx e quindi leggendo la lista di conoscenze necessarie per superare l'esame mi sono convinto che tutto sommato le cose le sapevo e che forse potevo tentare l'impresa.     &lt;br /&gt;Colmate (per ciò che è necessario all'esame) le ultime lacune come la programmazione mobile, lo sviluppo di controlli a template, web part e problematiche di deploying, ieri alle 10 di mattina     &lt;br /&gt;sono andato sul sito di Prometric e mi sono registrato per sostenere l'esame oggi alle ore 13:45 in una sede vicino al centro di Pisa. In realtà avevo provato a registrarmi venerdì ma era un giorno     &lt;br /&gt;santo e il sito non accettava registrazioni :-)&lt;/p&gt;  &lt;p align="justify"&gt;L'esame consisteva di 45 domande con risposta singola, multipla o interattiva (come per esempio mettere in ordine spezzoni di codice).   &lt;br /&gt;     &lt;br /&gt;&lt;strong&gt;&lt;font size="3"&gt;Ho realizzato un punteggio di 859 punti su 1000 quando il punteggio minimo per superare l'esame è di 700 punti&lt;/font&gt;&lt;/strong&gt;.     &lt;br /&gt;    &lt;br /&gt;Come mostrano i report riassuntivi le aree "Mobile Web Application", "Authentication and Authorization" e "Data-Bound Controls" sono quelle dove ho sbagliato un pò di più.&lt;/p&gt;  &lt;p align="justify"&gt;Considerando che sono uno studente e che quindi non uso la tecnologia quotidianamente, come invece può fare qualcuno che già è inserito nel mondo del lavoro    &lt;br /&gt;posso considerarmi soddisfatto del risultato ottenuto.&lt;/p&gt;  &lt;p align="justify"&gt;Il prossimo passo ovviamente sarà conquistare l'esame "Application Development Foundation" per cui, da diverso tempo, sto realizzando una serie di post che cerca di coprire tutti gli argomenti.    &lt;br /&gt;Sarebbe molto bello, fare un percorso di post per ciascun esame, ma mi sono reso conto che è abbastanza proibitivo in termini di tempo. Per questo motivo ho deciso di continuare     &lt;br /&gt;in questo modo solo per l'esame sui fondamenti che ritengo il più difficile e il più importante, mentre per gli altri mi limiterò ogni tanto a fare qualche post,     &lt;br /&gt;magari anche con qualche pizzico di considerazioni personali (come consigliato dall'arcinoto &lt;a href="http://www.vivendobyte.net/" target="_blank"&gt;Igor Damiani&lt;/a&gt;). Io sono una persona che ama le critiche quando queste possono essere costruttive.     &lt;br /&gt;    &lt;br /&gt;Ovviamente questo è solo l'inizio, al momento è in volo sull'oceano il libro &lt;a href="http://www.amazon.com/Microsoft-ASP-NET-3-5-Developer-Reference/dp/0735625271/ref=pd_bbs_sr_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1206570376&amp;amp;sr=8-5" target="_blank"&gt;"Programming Microsoft ASP.NET 3.5 Developer Reference"&lt;/a&gt; di Dino Esposito che sarà il punto di riferimento    &lt;br /&gt; per affrontare il progetto che ci attende. Volete che non utilizzi ASP.NET 3.5 e LINQ ? Ma nenache per idea :-)    &lt;br /&gt;Per quanto riguarda le problematiche legate alla sicurezza, al commercio elettronico e quindi all'utilizzo di SSL (https) avete qualche libro da consigliarmi ?     &lt;br /&gt;Nei prossimi mesi, se necessario, vi renderò partecipi dei problemi che incontrerò con la speranza di avere consigli utili da coloro che sono più esperti di me.&lt;/p&gt;  &lt;p align="justify"&gt;Saluti a tutti.&lt;/p&gt;  &lt;p align="justify"&gt;Andrea&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/angellaa/aggbug/91892.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Angella</dc:creator>
            <guid>http://blogs.ugidotnet.org/angellaa/archive/2008/03/26/91892.aspx</guid>
            <pubDate>Wed, 26 Mar 2008 23:34:45 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/angellaa/archive/2008/03/26/91892.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/angellaa/comments/commentRss/91892.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/angellaa/services/trackbacks/91892.aspx</trackback:ping>
        </item>
        <item>
            <title>I controlli server di convalida di ASP.NET 2.0</title>
            <link>http://blogs.ugidotnet.org/angellaa/archive/2007/08/17/87843.aspx</link>
            <description>I controlli server di convalida di ASP.NET 2.0 permettono di effettuare in modo estremamente semplice la validazione lato client e lato server dei campi di un form.&lt;br /&gt;
Come impostazione predefinita viene effettuato anche il controllo lato client ma è sufficiente impostare la proprietà &lt;strong&gt;EnableClientScript&lt;/strong&gt; a &lt;strong&gt;False&lt;/strong&gt; per disabilitarlo.&lt;br /&gt;
La validazione lato client deve essere disabilitata se si desiderano utilizzare i controlli server di convalida all'interno di un controllo UpdatePanel fornito dalle ASP.NET AJAX Extesions.&lt;br /&gt;
&lt;br /&gt;
I controlli server di convalida sono (escludendo il controllo ValidationSummary):
&lt;table cellspacing="0" cellpadding="2" width="800" border="1" unselectable="on"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="188"&gt;&lt;strong&gt;Nome del controllo&lt;/strong&gt;&lt;/td&gt;
            &lt;td valign="top" width="608"&gt;&lt;strong&gt;Descrizione&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="188"&gt;RequiredFiledValidator&lt;/td&gt;
            &lt;td valign="top" width="608"&gt;Garantisce che l'utente abbia impostato il campo&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="188"&gt;CompareValidator&lt;/td&gt;
            &lt;td valign="top" width="608"&gt;Confronta l'input dell'utente con un'altro valore&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="188"&gt;RangeValidator&lt;/td&gt;
            &lt;td valign="top" width="608"&gt;Controlla che l'input dell'utente sia compreso in un certo intervallo&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="188"&gt;RegularExpressionValidator&lt;/td&gt;
            &lt;td valign="top" width="608"&gt;Controlla che l'input dell'utente soddisfa un pattern definito da una espressione regolare&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="188"&gt;CustomValidator&lt;/td&gt;
            &lt;td valign="top" width="608"&gt;Controlla che l'input dell'utente soddisfa una logica personalizzata&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
Di seguito mostro alcuni esempi di utilizzo abbastanza intuitivi per mostrare alcune delle proprietà meno note.
&lt;h3&gt;&lt;font size="2"&gt;Garantire che una casella di testo non venga lasciata vuota:&lt;/font&gt;&lt;/h3&gt;
&lt;blockquote&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;
&lt;p&gt;&lt;br /&gt;
&amp;lt;asp:TextBox ID="controllo" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" &lt;br /&gt;
                            Text="Messaggio di errore visualizzato"&lt;br /&gt;
                            ErrorMessage="Messaggio di errore che sarà visualizzato in un ValidationSummary"&lt;br /&gt;
                            ControlToValidate="controllo" &lt;br /&gt;
                            &lt;font color="#ff0000"&gt;SetFocusOnError&lt;/font&gt;="&lt;font color="#0000ff"&gt;True&lt;/font&gt;" /&amp;gt;&lt;/p&gt;
&lt;/strong&gt;&lt;/font&gt;&lt;/blockquote&gt;
&lt;h3&gt;&lt;font size="2"&gt;&lt;br /&gt;
Garantire che una casella di testo non venga lasciata vuota e venga modificato il valore iniziale:&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;Per fare questo è necessario utilizzare due RequiredFieldValidator.&lt;br /&gt;
Una proprietà importante è &lt;strong&gt;InitialValue&lt;/strong&gt; che permette di impostare il testo iniziale dell'elemento che l'utente deve modificare prima di effettuare il submit del form.&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;
&lt;p&gt;&lt;br /&gt;
&amp;lt;asp:TextBox ID="controllo" runat="server"&amp;gt;Inserisci nome&amp;lt;/asp:TextBox&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" &lt;br /&gt;
                            ErrorMessage="Devi cambiare il valore al campo."&lt;br /&gt;
                            ControlToValidate="controllo" &lt;br /&gt;
                            Display="Dynamic"&lt;br /&gt;
                            &lt;font color="#ff0000"&gt;InitialValue&lt;/font&gt;="&lt;font color="#0000ff"&gt;Inserisci nome&lt;/font&gt;"/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" &lt;br /&gt;
                            ErrorMessage="Non lasciare vuoto il campo."&lt;br /&gt;
                            Display="Dynamic"&lt;br /&gt;
                            ControlToValidate="controllo"/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;/strong&gt;&lt;/font&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;&lt;font size="2"&gt;Garantire la scelta di una voce da una DropDownList:&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt; &lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&amp;lt;asp:DropDownList ID="Colori" runat="server"&amp;gt;&lt;br /&gt;
    &amp;lt;asp:ListItem Selected="True"&amp;gt;Seleziona un colore&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;
    &amp;lt;asp:ListItem&amp;gt;Rosso&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;
    &amp;lt;asp:ListItem&amp;gt;Verde&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;
    &amp;lt;asp:ListItem&amp;gt;Blu&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;
&amp;lt;/asp:DropDownList&amp;gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" &lt;br /&gt;
                            ErrorMessage="Devi selezionare un colore" &lt;br /&gt;
                            ControlToValidate="Colori"&lt;br /&gt;
                            Display="Dynamic"&lt;br /&gt;
                            &lt;font color="#ff0000"&gt;InitialValue&lt;/font&gt;="&lt;font color="#0000ff"&gt;Seleziona un colore&lt;/font&gt;"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;&lt;font size="2"&gt;Garantire che venga inserita una data in una casella di testo:&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt; &lt;br /&gt;
&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;asp:TextBox ID="data" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;asp:CompareValidator ID="CompareValidator1" runat="server" &lt;br /&gt;
                      ErrorMessage="Non hai inserito una data." &lt;br /&gt;
                      ControlToValidate="data"&lt;br /&gt;
                      &lt;font color="#ff0000"&gt;Type&lt;/font&gt;="&lt;font color="#0000ff"&gt;Date&lt;/font&gt;"&lt;br /&gt;
                      &lt;font color="#ff0000"&gt;Operator&lt;/font&gt;="&lt;font color="#0000ff"&gt;DataTypeCheck&lt;/font&gt;"/&amp;gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;&lt;font size="2"&gt;Garantire che venga inserito un numero tra 0 e 10:&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt; &lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&amp;lt;asp:TextBox ID="voto" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;asp:RangeValidator ID="RangeValidator1" runat="server" &lt;br /&gt;
                    ErrorMessage="Devi inserire un voto tra 0 e 10"&lt;br /&gt;
                    ControlToValidate="voto"&lt;br /&gt;
                    Type="Integer"&lt;br /&gt;
                    MinimumValue="0"&lt;br /&gt;
                    MaximumValue="10" /&amp;gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;&lt;font size="2"&gt;Controllare che venga inserito un indirizzo di posta elettronica:&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
  &lt;/p&gt;
&lt;p&gt;&amp;lt;asp:TextBox ID="mail" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" &lt;br /&gt;
                                ErrorMessage="Inserire un indirizzo di posta elettronica valido."&lt;br /&gt;
                                ControlToValidate="mail"                                        &lt;br /&gt;
                                ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" /&amp;gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;&lt;font size="2"&gt;Effettuare una convalida personalizzata sia sul client che sul server (valore numerico potenza di 10):&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;Per prima cosa è opportuno definire una funzione javascript che effettuerà la validazione:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;br /&gt;
&amp;lt;script language="javascript" type="text/javascript"&amp;gt; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;    &lt;font color="#008040"&gt;&lt;font color="#008000"&gt;// Controllo che il testo inserito sia un numero multiplo di 10&lt;/font&gt;&lt;br /&gt;
&lt;/font&gt;    function controlloClient(source, args)&lt;br /&gt;
    {&lt;br /&gt;
        var testo = &lt;font color="#ff0000"&gt;args.Value&lt;/font&gt;;  &lt;font color="#008000"&gt;// Leggo il valore del controllo&lt;/font&gt;&lt;br /&gt;
        if ( testo % 10 == 0 )&lt;br /&gt;
        {&lt;br /&gt;
            args.IsValid = true; &lt;font color="#008000"&gt;// La validazione è andata a buon fine&lt;/font&gt;&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;font color="#ff0000"&gt;args.IsValid&lt;/font&gt; = false; &lt;font color="#008000"&gt;// Il controllo non ha superato la validazione&lt;/font&gt;&lt;br /&gt;
    } &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Dopodichè si inserisce un controllo &lt;strong&gt;CustomValidator&lt;/strong&gt; impostando la proprietà &lt;strong&gt;ClientValidationFunction&lt;/strong&gt; con il nome della funzione javascript.&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font face="Courier New"&gt;&lt;strong&gt;&amp;lt;asp:TextBox ID="potenzaDiDieci" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="Courier New"&gt;&amp;lt;asp:CustomValidator ID="CustomValidator1" runat="server"&lt;br /&gt;
                     ErrorMessage="Devi inserire una potenza di 10." &lt;br /&gt;
                     ControlToValidate="potenzaDiDieci"&lt;br /&gt;
                     &lt;font color="#ff0000"&gt;ClientValidationFunction&lt;/font&gt;="&lt;font color="#0000ff"&gt;controlloClient&lt;/font&gt;" &lt;br /&gt;
                     &lt;font color="#ff0000"&gt;onservervalidate&lt;/font&gt;="&lt;font color="#0000ff"&gt;CustomValidator1_ServerValidate&lt;/font&gt;" /&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Per effettuare la convalida lato server invece è opportuno gestire l'evento &lt;strong&gt;onservervalidate&lt;/strong&gt; e procedere in modo analogo a quanto effettuato sul client.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;font color="#008000"&gt;// Gestore che effettua la validazione lato server del numero&lt;br /&gt;
&lt;/font&gt;protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)&lt;br /&gt;
{&lt;br /&gt;
    string testo = &lt;font color="#ff0000"&gt;args.Value&lt;/font&gt;;  &lt;font color="#008000"&gt;// Leggo il valore del controllo da validare&lt;br /&gt;
&lt;/font&gt;    int numero; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;    Int32.TryParse(testo, out numero); &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="Courier New"&gt;    if ( Int32.TryParse(testo, out numero) )&lt;br /&gt;
    {&lt;br /&gt;
        if (numero % 10 == 0)&lt;br /&gt;
        {&lt;br /&gt;
            &lt;font color="#ff0000"&gt;args.IsValid&lt;/font&gt; = true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            &lt;font color="#ff0000"&gt;args.IsValid&lt;/font&gt; = false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        &lt;font color="#ff0000"&gt;args.IsValid&lt;/font&gt; = false;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
E' da sottolineare ad esempio che all'interno del pulsante che ha provotato il PostBack è possibile utilizzare la proprietà &lt;strong&gt;IsValid&lt;/strong&gt; dell'oggetto &lt;strong&gt;Page&lt;/strong&gt; per controllare se il form ha superato la procedura di validazione.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;&lt;br /&gt;
protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;
{&lt;br /&gt;
    if (&lt;font color="#ff0000"&gt;Page.IsValid&lt;/font&gt;)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;font color="#008000"&gt;// TODO: Elaborazione del form...&lt;/font&gt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;font size="2"&gt;Note aggiuntive:&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt; &lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;All'interno di &lt;strong&gt;ErrorMessage&lt;/strong&gt; è possibile inserire del testo HTML, quindi è possibile anche inserire delle immagini che segnalino visivamente l'errore. &lt;/li&gt;
    &lt;li&gt;Se si desiderano utilizzare più form all'interno di una pagina in ASP.NET 2.0 è possibile utilizzare la proprietà &lt;strong&gt;ValidationGroup&lt;/strong&gt; per raggruppare i controlli di convalida in gruppi separati tra di loro. &lt;/li&gt;
    &lt;li&gt;Nel caso sia impostato &lt;strong&gt;SetFocusOnError&lt;/strong&gt; a &lt;strong&gt;true&lt;/strong&gt; e si verificano più errori, il focus sarà dato al controllo del form più in alto nella pagina. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/angellaa/aggbug/87843.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Angella</dc:creator>
            <guid>http://blogs.ugidotnet.org/angellaa/archive/2007/08/17/87843.aspx</guid>
            <pubDate>Fri, 17 Aug 2007 18:34:42 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/angellaa/archive/2007/08/17/87843.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/angellaa/comments/commentRss/87843.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/angellaa/services/trackbacks/87843.aspx</trackback:ping>
        </item>
    </channel>
</rss>