Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
GESTIONE CLIENT
lunedì 15 settembre 2003 - 16.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
050782
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 15 set 2003 - 16:31
Devo gestire delle variabili "globali" lato client, cioè l'applicazione sta sul server, ma ogni utente che vi si connette deve poter valorizzare differentemente delle variabili.
Come posso gestire questa cosa??
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 15 set 2003 - 16:42
Non si capisce bene ciò che dici?
Che cosa vorresti realizzare? Forse capisco meglio.
Hai qualche esempio che hai visto in giro?
Ciao
David De Giacomi
050782
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 15 set 2003 - 16:46
Inizialmente avevo utilizzato una STRUCTURE, ma facendo delle prove mi sono accorta che anche se da due client impostavo valori diversi, veniva considerato per entrambi lo stesso (praticamente l'ultimo che veniva impostato).
Si capisce un po' meglio??
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
lun 15 set 2003 - 16:50
Ciao,
occorre fare un pò una distizione su codice che gira sul server e codice che invece gira sul client.
Sul server:
gira il codice che genera output da inviare all'utente, nella maggior parte dei casi sottoforma di HTML.
Tale codice può essere eseguito, grazie alla nuova visione di programmazione event-driven di asp.net, a seguito di azioni sul client che provochino delle postback sul server, passando determinati valori, come parametri post.
Sul client:
gira del codice di scripting, in genere javascript, che può essere generato ed inviato sul client dal codice che gira sul server.
Considerazioni:
potresti usare delle variabili globali di javascript, ma se lo fai alla postback la pagina verrà ricreata e le variabili perderanno il loro valore.
Soluzione:
1) Puoi usare l'oggetto ViewState da codice server, per inserire dei valori che vengono mandati sul client e rispediti sul server ad ogni postback:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIControlClassViewStateTopic.asp
2) puoi far renderizzare sul client un controllo HtmlInputHidden con il valore in questione, che sarà manipolabile da codice javascript con document.all["nomehidden"].value, ed il suo contenuto sarà ripostato e disponibile sul server.
Ci possono essere altre soluzioni, ma avrei bisogno di sapere per cosa ti serve in realtà quanto hai richiesto.
Spero di esserti stato d'aiuto.
Ciao
Stefano Giannone [MCP .NET]
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
lun 15 set 2003 - 16:53
tutto il discorso qua sotto vale se stai parlando ovviamente di una applicazione ASP.NET... visto che siamo dentro ad un forum denominato "ASP.NET".
Ciao
Stefano Giannone
050782
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 15 set 2003 - 17:00
ok, grazie.
Cercherò di capire come utilizzare il ViewState
050782
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 15 set 2003 - 17:07
Non mi sembra una soluzione.... oppure non capisco come funziona la ViewState.
Cmq, le variabili devono essere visibili in tutta l'applicazione (ci sono molte form!)
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
lun 15 set 2003 - 17:07
prego.
Cmq non è difficile... si tratta di usare delle istruzioni semplicissime, del tipo:
ViewState("miaChiave") = "ciao"
e per recuperare:
Dim myVar as String
myVar = DirectCast(ViewState("miaChiave"), string)
Faccio il DirectCast per riportare nel tipo "string" il valore restituito da viewstate che è "object" (in VB.NET non sarebbe nemmeno necessario con option strict impostato a off, che è il default)
Ricorda che viewstate è ottimizzato per contenere istanze di tipi primitivi (integer, boolean, etc.) e per String, ArrayList e HashTable.
Spero di esserti stato d'aiuto.
Alla prossima.
Ciao
Stefano Giannone [MCP .NET]
050782
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 15 set 2003 - 17:09
Ma "miachiave" deve essere un controllo?
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
lun 15 set 2003 - 17:19
no... "miaChiave" è soltanto una stringa che ti serve per riporre il tuo valore, e per poterlo recuperare in seguito.
ViewState è una collezione di oggetti di tipo "chiave/valore". Questo significa che puoi inserire dentro la collezione tutti gli oggetti (e quindi stringhe, array, numeri, etc.) che vuoi... soltanto che ogni volta che li inserisci devi fornire una chiave, con la quale l'oggetto verrà memorizzato all'interno della collezione.
Questo ti permetterà in seguito di poter recuperare facilmente il tuo oggetto dalla collezione di oggetti semplicemente indicando a ViewState con quale chiave è stato memorizzato... e quindi ViewState("nomeChiave") ti restituirà l'oggetto che tu avevi riposto precedentemente.
Spero di esser stato chiaro.
Ciao
Stefano Giannone [MCP .NET]
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
lun 15 set 2003 - 17:26
stai parlando di molte form... cioè molte "web form", giusto ?
Ok, se è così credo finalmente di aver capito... non avevo letto che il valore ti servisse condividerlo tra le varie form.
In questo caso devi utilizzare Session.
Funziona allo stesso modo di come ti ho descritto poco fa la ViewState, e quindi :
Session("miaChiave") = "ciao"
e per recuperare:
Dim myVar As String
myVar = DirectCast(Session("miaChiave"), String) ' myvar conterrà "ciao"
La differenza con ViewState sta nel fatto che, Session viene memorizzato direttamente sulla memoria del server, ed è collegato all'utente che sta eseguendo la sessione dell'applicazione.
Quindi non viene inviata al client come avveniva con la ViewState.
In session puoi memorizzare tutto (sempre con le dovute cautele, occupi memoria sul server)... non valgono i limiti che ti ho indicato poco fa per viewstate.
Qui trovi esempio e reference su session:
http://msdn.microsoft.com/library/en-us/dv_vbcode/html/vbtskCodeExampleReadingSessionState.asp?frame=true
Ciao
Stefano Giannone [MCP .NET]
050782
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 15 set 2003 - 17:35
Ci avevo già pensato, ma volevo sapere se c'è un modo differente di gestire la cosa
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
lun 15 set 2003 - 17:40
direi proprio di no.
Session serve proprio a questo.
Se i dati non sono riferiti e collegati con l'utente che sta navigando, ma al contrario invece sono dei dati che possono essere condivisi da tutti gli utenti (in genere quasi mai)...allora puoi usare Cache o Application, che funzionano più o meno come Session nell'inserire e recuperare... ma come ti ho detto hanno scopi diversi da session (valori condivisi a tutti gli utenti).
Ciao
Stefano
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !