Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    disabilitare lo stato del controllo

    Salve,

    volevo sapere se cera il modo di disabilitare lo stato del controllo. Facendo un pò di prove ho notato che per esempio nel caso del controllo HiddenField il valore viene mantenuto durante i postback, anche se imposto su "false" la proprietà "EnableViewState" (stessa cosa accade per le proprietà width e height del controllo panel).
    Deduco quindi che il valore viene conservato nel control state.

    A questo punto la soluzione sarebbe o disabilitare il control state o creare un nuovo controllo ereditando dalla classe HiddenField e facendo l'override di qualche metodo interno utilizzato per salvare il valore nel control state.

    E possibile risolvere con una di queste due soluzioni? e se si, qualcuno di voi ha già provato a farlo?

    Esistono altre soluzioni in merito?

  2. #2

  3. #3
    un controllo Hiddenfield che non conservi il valore ad ogni postback.

    Lo so che potrei usare un trucchetto e azzerrare il valore dopo l'evento in cui viene caricato il control state ma mi viene un pò più complicato implementarlo per alcuni motivi che non sto a spiegarti...

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    non basta pulirlo nel page_load, semplicemente ?

    ho fatto un esempio:

    codice:
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="tb" runat="server"></asp:TextBox>
            <asp:Button ID="bt" runat="server" Text="PB !" />
            <asp:Button ID="bt2" runat="server" Text="PB2 !" />
    
            
    
             
            <asp:HiddenField ID="hf" runat="server" />
        </div>
        </form>
    codice:
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            hf.Value = ""
        End Sub
    
        Protected Sub bt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt.Click
            hf.Value = tb.Text
        End Sub
    ed al click sul secondo bottone il value è azzerato...

  5. #5
    si si ok
    il punto però è che io non conosco a priori gli ID dei controlli perchè vengono creati dinamicamente, comunque dovrei risolvere creando un array e infilandoci all'avvio tutti gli ID dei controlli HiddenField che vengono creati e dopo l'evento che durante il ciclo di vita della pagina mi carica il controlstate di questi controlli itero sull'array e per ogni controllo azzero il valore.

    Era per evitare questo modo un pò "arcano" ma non credo ci siano altre soluzioni, ammenochè ripeto o disabilito il control state (ma non credo si possa fare) o creo un nuovo controllo che non salvi i valori nel control state.

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Allora ok,
    nel Page_Init, cicla tutti i controlli della pagina (facendo attenzione a quelli contenuti in altri controlli) e becca tutti gli HiddenFields, azzerandone il valore.

    Secondo me dell'array non c'e' bisogno, basta azzerare il Value, se il controllo incontrato è di tipo HiddenField.

    Una cosa tipo
    codice:
          For Each controllo As Control In Me.Form1.Controls
             If TypeOf (controllo) Is HiddenField Then
                 DirectCast(controllo, HiddenField).Value = ""
             End If
          Next

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    59
    gli hiddenfield sono fatti apposta per mantenere valori fra postback successivi, non è un problema di viewstate o controlstate.
    forse quello che ti serve non è un hiddenfield ma qualcos'altro

  8. #8
    si ma cosa useresti allora per scrivere dei valori con javascript e inviarli al server?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    59
    ah li setti da javascript?
    allora puoi azzerarli lato client al load della pagina.. sempre con javascript

  10. #10
    si è vero che coglione che sono non avevo pensato a questa semplice soluzione.

    Anche se comunque volevo avere la conferma che non si potesse disabilitare il control state

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.