<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>Scoperte di un principiante</title>
        <link>http://blogs.ugidotnet.org/DanBlog/category/Scoperte di un principiante.aspx</link>
        <description>Cosa ho imparato oggi?</description>
        <language>it-IT</language>
        <copyright>Daniele Armanasco</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Thread asincrono e pagine asp.net</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2008/05/30/92875.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Contesto: devo lanciare un'operazione che può durare molto tempo eseguita da un metodo sincrono che non torna eventi (legacy). Devo fornire un &lt;/font&gt;&lt;font face="Arial"&gt;feedback all'utente (una sorta di pagina clessidra) e, a lavoro terminato, mostrare il risultato.&lt;br /&gt;
Soluzione adottata: creo una pagina per iniziare l'operazione e configurarne i parametri (pagina Start), una autorefreshante per comunicare che il &lt;/font&gt;&lt;font face="Arial"&gt;lavoro è in corso (pagina Wait) e una pagina per mostrare i risultati (pagina Results).&lt;br /&gt;
La pagina Start:&lt;br /&gt;
- mette in sessione un flag per indicare che il calcolo è in corso&lt;br /&gt;
- istanzia un delegate per richiamare il metodo sincrono con un nuovo thread; &lt;br /&gt;
- lancia il nuovo thread passando eventuali parametri del metodo, un riferimento al metodo di callback e un riferimento al caller stesso&lt;br /&gt;
- carica la pagina Wait&lt;br /&gt;
Il caller del MetodoLungo:&lt;br /&gt;
- a lavoro completato richiama il metodo di callback sulla pagina Start&lt;br /&gt;
Il metodo di callback (su Start):&lt;br /&gt;
- riaggancia il chiamante&lt;br /&gt;
- recupera il risultato del calcolo usando EndInvoke sul chiamante&lt;br /&gt;
- mette il risultato in sessione&lt;br /&gt;
- setta il flag in sessione per indicare che il calcolo è terminato&lt;br /&gt;
La pagina Wait:&lt;br /&gt;
- ha un tag meta (magari inserito da codice) per fare il refresh automatico&lt;br /&gt;
- verifica il flag in sessione per sapere quando passare alla pagina dei risultati&lt;br /&gt;
La pagina Results:&lt;br /&gt;
- recupera il risultato dalla sessione e lo mostra&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Codice:&lt;br /&gt;
pagina Start:&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;   public delegate TipoRisultatoCalcoloLungo MetodoLungoAsyncCaller(TipoParametro1MetodoLungo par1,   TipoParametro2MetodoLungo par2);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;    public partial class StartPage&lt;br /&gt;
    {&lt;br /&gt;
     ...&lt;br /&gt;
     void Toolbar1_ButtonClick(object sender, ToolbarEventArgs ea)&lt;br /&gt;
        {&lt;br /&gt;
              &lt;/font&gt;&lt;font face="Arial"&gt;Session[SessionConstants.SCAN_IN_PROGRESS] = true;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;                        // Create the delegate.&lt;br /&gt;
                        MetodoLungoAsyncCaller caller = new MetodoLungoAsyncCaller(MetodoLungo);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;                        // Initiate the asychronous call.  Include an AsyncCallback&lt;br /&gt;
                        // delegate representing the callback method, and the data&lt;br /&gt;
                        // needed to call EndInvoke.&lt;br /&gt;
                        IAsyncResult result = caller.BeginInvoke(valorePar1, valorePar2,&lt;br /&gt;
                            new AsyncCallback(CallbackMethod),&lt;br /&gt;
                            caller);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;                        // goto to "hourglass" page&lt;br /&gt;
                        Response.Redirect(WebFormsConstants.WAIT_ASPX);&lt;br /&gt;
        }&lt;br /&gt;
        ...&lt;br /&gt;
        // Callback method&lt;br /&gt;
        public void CallbackMethod(IAsyncResult ar)&lt;br /&gt;
        {&lt;br /&gt;
            // Retrieve the delegate.&lt;br /&gt;
            MetodoLungoAsyncCaller caller = (MetodoLungoAsyncCaller)ar.AsyncState;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;            // Call EndInvoke to retrieve the results.&lt;br /&gt;
            TipoRisultatoCalcoloLungo risultato = caller.EndInvoke(ar);&lt;br /&gt;
            Session[SessionConstants.RISULTATO] = risultato;&lt;br /&gt;
            // set flag in session to comunicate scan completed&lt;br /&gt;
            Session[SessionConstants.SCAN_IN_PROGRESS] = false;&lt;br /&gt;
         }&lt;br /&gt;
         ...&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;pagina Wait:&lt;br /&gt;
protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            HtmlMeta meta = new HtmlMeta();&lt;br /&gt;
            meta.HttpEquiv = "refresh";&lt;br /&gt;
            meta.Content = "10";&lt;br /&gt;
            Header.Controls.Add(meta);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;            if ((Boolean)Session[SessionConstants.SCAN_IN_PROGRESS] == false)&lt;br /&gt;
                Response.Redirect(WebFormsConstants.RESULT_ASPX);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;            Message1.Text = "In Progress";&lt;br /&gt;
        }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" /&gt; &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/92875.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2008/05/30/92875.aspx</guid>
            <pubDate>Fri, 30 May 2008 04:45:57 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2008/05/30/92875.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/92875.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/92875.aspx</trackback:ping>
        </item>
        <item>
            <title>Meta tag per refresh automatico pagina</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2008/05/30/92874.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Promemoria:          &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;            System.Web.UI.HtmlControls.HtmlMeta meta = new System.Web.UI.HtmlControls.HtmlMeta();&lt;br /&gt;
            meta.HttpEquiv = "refresh";&lt;br /&gt;
            meta.Content = "5";  // secondi&lt;br /&gt;
            Header.Controls.Add(meta);&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/92874.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2008/05/30/92874.aspx</guid>
            <pubDate>Fri, 30 May 2008 04:30:29 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2008/05/30/92874.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/92874.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/92874.aspx</trackback:ping>
        </item>
        <item>
            <title>Escape di caratteri speciali</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89700.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt; - stringhe classiche: &lt;/font&gt;&lt;font face="Arial"&gt;myString = "prova=\"aaa\"" (uso \)&lt;br /&gt;
 - stringhe con @: myString = @"prova=""aaa""" (raddoppio gli apici)&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/89700.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89700.aspx</guid>
            <pubDate>Thu, 15 Nov 2007 00:11:54 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89700.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/89700.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/89700.aspx</trackback:ping>
        </item>
        <item>
            <title>New line</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89698.aspx</link>
            <description>&lt;font face="Arial"&gt;System.Environment.NewLine OPPURE "/r/n"&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/89698.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89698.aspx</guid>
            <pubDate>Thu, 15 Nov 2007 00:09:21 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89698.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/89698.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/89698.aspx</trackback:ping>
        </item>
        <item>
            <title>Rimuovere elementi da una Collection su cui devo ciclare</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89697.aspx</link>
            <description>&lt;font face="Arial"&gt;
&lt;p&gt;&lt;br /&gt;
Siccome non posso rimuovere elementi da una collection mentre la sto scorrendo con un ciclo foreach, devo salvare gli elementi da eliminare in una lista temporanea e fare poi un altro ciclo, sulla lista temporanea, per rimuoverli:&lt;/p&gt;
&lt;p&gt;IList&amp;lt;Child&amp;gt; childrenToDelete = new List&amp;lt;Child&amp;gt;();                    &lt;br /&gt;
foreach (Child child in Father.Children)&lt;br /&gt;
{&lt;br /&gt;
   if (...)&lt;br /&gt;
      childrenToDelete.Add(child);&lt;br /&gt;
}&lt;br /&gt;
foreach (Child child in childrenToDelete)&lt;br /&gt;
   Father.Children.Remove(child);&lt;br /&gt;
                        &lt;/p&gt;
&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/89697.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89697.aspx</guid>
            <pubDate>Thu, 15 Nov 2007 00:02:03 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/15/89697.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/89697.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/89697.aspx</trackback:ping>
        </item>
        <item>
            <title>Implementare flags mediante operatori bitwise</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/14/89696.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Innanzitutto dichiaro un enum con la lista dei possibili flag; è importante che l'enum abbia l'attributo [Flags] e che gli elementi della lista abbiano associato un valore che sia potenza di 2 (1, 2, 4, ...). Si possono definire fino a 32 elementi.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;[Flags] private enum Buttons : int &lt;br /&gt;
{&lt;br /&gt;
···Ok = 1, Cancel = 2, Retry = 4, Help = 8&lt;br /&gt;
}&lt;font face="Arial" /&gt;&lt;/p&gt;
&lt;p&gt;Tip: è possibile aggiungere alla enumerazione un elemento "All" così: All = Ok | Cancel | Retry | Help&lt;/p&gt;
&lt;p&gt;Attivare più flag: concatenali con l'operatore bitwise "|" (or):&lt;br /&gt;
Buttons buttons;&lt;br /&gt;
buttons = Buttons.Ok | Buttons.Cancel;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Disattivare un flag: usa l'operatore bitwise "~" (not):&lt;br /&gt;
buttons &amp;amp;= ~Buttons.Cancel;&lt;/p&gt;
&lt;p&gt;Verificare se un flag è attivo: &lt;/p&gt;
&lt;p&gt;Testing to see if a certain flag is set: usa l'operatore bitwise "&amp;amp;" (and):&lt;br /&gt;
if ((buttons&amp;amp;Buttons.Ok)==Buttons.Ok)&lt;br /&gt;
···Console.WriteLine("Ok");&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/89696.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/14/89696.aspx</guid>
            <pubDate>Wed, 14 Nov 2007 23:41:04 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/11/14/89696.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/89696.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/89696.aspx</trackback:ping>
        </item>
        <item>
            <title>Interfacce</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88284.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Sono comode per simulare l'ereditarietà multipla.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Esempio: il padre di un container può essere di tipo Grid o item; per poter castare il parent del container a &lt;/font&gt;&lt;font face="Arial"&gt;qualcosa e richiamare un metodo uguale su grid e item, ho dovuto definire una interfaccia &lt;/font&gt;&lt;font face="Arial"&gt;generica che prevede il metodo, specificare che grid e item la implementano, castare il parent &lt;/font&gt;&lt;font face="Arial"&gt;all'interfaccia e richiamare il metodo.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;public interface IGenericElement&lt;br /&gt;
    {&lt;br /&gt;
        GenericGrid Grid();&lt;br /&gt;
        IGenericElement Father();&lt;br /&gt;
    }&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;&lt;br /&gt;
public partial class GenericGrid : System.Web.UI.UserControl, IGenericElement&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;/p&gt;
&lt;p&gt;        public GenericGrid Grid()&lt;br /&gt;
        {&lt;br /&gt;
            return this; &lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;        public IGenericElement Father()&lt;br /&gt;
        {&lt;br /&gt;
            return this; &lt;br /&gt;
        }&lt;br /&gt;
 ...&lt;br /&gt;
    }&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
    public partial class GenericContainer : System.Web.UI.UserControl, IGenericElement&lt;br /&gt;
    {&lt;br /&gt;
 ...&lt;br /&gt;
        public GenericGrid Grid()&lt;br /&gt;
        { &lt;br /&gt;
            return ((IGenericElement) Parent).Grid();&lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;        public IGenericElement Father()&lt;br /&gt;
        {&lt;br /&gt;
            // container father could be a grid or an item&lt;br /&gt;
            return (IGenericElement) Parent; &lt;br /&gt;
        }&lt;br /&gt;
espongo una proprietà della griglia attraverso il container:&lt;br /&gt;
        public Boolean IsInList&lt;br /&gt;
        {&lt;br /&gt;
            get { return Grid().IsList ; }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;/p&gt;
&lt;p&gt;public abstract partial class GenericItemBase : System.Web.UI.UserControl, IGenericElement&lt;br /&gt;
    {&lt;br /&gt;
 ...&lt;br /&gt;
        public GenericGrid Grid()&lt;br /&gt;
        {&lt;br /&gt;
            return ((IGenericElement) Parent).Grid();&lt;br /&gt;
        }&lt;br /&gt;
        public IGenericElement Father()&lt;br /&gt;
        {&lt;br /&gt;
            // item father is always a container&lt;br /&gt;
            return (IGenericElement)Parent;&lt;br /&gt;
        }&lt;br /&gt;
espongo una property della grid attraverso l'item:&lt;br /&gt;
        public Boolean IsInList&lt;br /&gt;
        {&lt;br /&gt;
            get { return Grid().IsList; }&lt;br /&gt;
        }&lt;br /&gt;
espongo una property del container padre (item contenuti solo in container) attraverso l'item:&lt;br /&gt;
        public Boolean IsInNestedContainer&lt;br /&gt;
        {&lt;br /&gt;
            get { return ((GenericContainer) Father()).NestChildren; }&lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;NOTA: l'interfaccia specifica metodi, non property.&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/88284.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88284.aspx</guid>
            <pubDate>Wed, 12 Sep 2007 03:54:19 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88284.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/88284.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/88284.aspx</trackback:ping>
        </item>
        <item>
            <title>Serializzazione in JSON</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88280.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Per serializzare in JSON un oggetto:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;System.Web.Script.Serialization.JavaScriptSerializer serializer = new &lt;/font&gt;&lt;font face="Arial"&gt;JavaScriptSerializer();&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;String result = serializer.Serialize(o);&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/88280.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88280.aspx</guid>
            <pubDate>Wed, 12 Sep 2007 02:59:35 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88280.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/88280.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/88280.aspx</trackback:ping>
        </item>
        <item>
            <title>Avviare un processo</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88279.aspx</link>
            <description>&lt;font face="Arial"&gt;Per avviare un processo (ad esempio aprire il browser all'indirizzo in LinkLabel):&lt;br /&gt;
System.Diagnostics.Process.Start(LinkLabel1.Text)&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/88279.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88279.aspx</guid>
            <pubDate>Wed, 12 Sep 2007 02:53:28 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88279.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/88279.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/88279.aspx</trackback:ping>
        </item>
        <item>
            <title>Leggere dati postati da controlli html client-side</title>
            <link>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88277.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;Supponendo di costruire, nel page load, i seguenti controlli html iniettando il testo in un literal&lt;br /&gt;
            sb = new StringBuilder();&lt;br /&gt;
            sb.Append("&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Sezione CHECKBOX&amp;lt;br/&amp;gt;");&lt;br /&gt;
            sb.Append("&amp;lt;input name='chk1' type='checkbox' checked=\"checked\" /&amp;gt;");&lt;br /&gt;
            sb.Append("&amp;lt;input name='chk2' type='checkbox' /&amp;gt;");&lt;br /&gt;
            sb.Append("&amp;lt;br/&amp;gt;Sezione INPUT TEXT &amp;lt;input type='text' name='txt1' value='testo predefinito' /&amp;gt;&amp;lt;br/&amp;gt;");&lt;br /&gt;
            sb.Append("&amp;lt;br/&amp;gt;Sezione SELECT ");&lt;br /&gt;
            sb.Append("&amp;lt;select name='sel1'&amp;gt;&amp;lt;option value='1'&amp;gt;voce 1&amp;lt;/option&amp;gt;&amp;lt;option value='2'&amp;gt;voce 2&amp;lt;/option&amp;gt;&amp;lt;/select&amp;gt;");&lt;br /&gt;
            &lt;br /&gt;
            litBody.Text = sb.ToString();&lt;br /&gt;
è possibile leggere il valore degli stessi con l'istruzione:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;
&lt;p&gt;&lt;br /&gt;
Object o = Request.Form.Get("chk1");&lt;/p&gt;
&lt;p&gt;e via di seguito con gli altri Name dei controlli.&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;br /&gt;
o conterrà: &lt;br /&gt;
"on" per le checkbox selezionate (sarà null per quelle non selezionate perchè non vengono postate)&lt;br /&gt;
il testo inserito nelle textbox&lt;br /&gt;
il valore associato all'opzione selezionata per le select&lt;br /&gt;
NOTA: per leggere il post devo far riferimento al name e non all'id!&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/DanBlog/aggbug/88277.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Armanasco</dc:creator>
            <guid>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88277.aspx</guid>
            <pubDate>Wed, 12 Sep 2007 02:30:13 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/DanBlog/archive/2007/09/12/88277.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/DanBlog/comments/commentRss/88277.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/DanBlog/services/trackbacks/88277.aspx</trackback:ping>
        </item>
    </channel>
</rss>