Link di collegamento a pagina aspx dopo login

lunedì 22 febbraio 2010 - 22.18

mauri1961 Profilo | Senior Member

Dopo l'inserimento di un codice utente e una password gestita personalmente attraverso una tabella di un database vorrei, in caso di autenticazione con successo, aprire un’altra pagina aspx contenente i dati visibili all’utente selezionato.
Ho due problemi:
Quello che reputo il link di collegamento (ma non so se la sintassi è corretta) non risponde al click su ACCESSO AI DATI e rimane fermo li, ecco il codice interessato:
If reader.Read() Then
FormsAuthentication.SetAuthCookie(reader("con_key"), False)
Session.Add("con_utente", reader("con_key"))
Errore.Text = " AUTENTICAZIONE CORRETTA !!<br/><a href='C:\ceiweb\ceiweb\ceiweb\vw-imprese.aspx()'>ACCESSO AI DATI</a>"
Else

Errore.Text = "USER O PASSWORD NON CORRETTI"
End If
Inoltre avrei bisogno di passare il campo “con_key” sulla seconda pagina aspx vorrei sapere se e come possibile farlo.

Grazie, Maurizio.

Jok83 Profilo | Junior Member

Ciao
una volta fatta l'autenticazione puoi passare a una nuova pagina esistente con il comando:

Response.Redirect(url, False)
mentre per salvare un dato è giusto come hai fatto in sessione:
session.add(nome,valore)
e lo recuperi dove vuoi, per esempio assegnandolo a una label:
label1.text=session.item(nome)

spero sia ciò che cerchi ciao!

mauri1961 Profilo | Senior Member

Sono riuscito a far aprire la pagina, ma per quanto riguarda il passaggio del dato mi segnala errore a livello del compilatore.
Premettendo che sto iniziando ora ad utilizzare asp.net il mio obiettivo e quello di passare un nome (con_utente) che fa parte di una tabella di un database.
Nella form di arrivo questo valore dovrà essere inserito in una select di tale tabella per selezionare i record da visualizzare (solo quelli con tale dato corrispondente).
Questa form è composta da una gridview e da un detailview (funzionanti) quindi per passare il valore ho inserito quanto segue:

sub page_load(byval sender as object, byval e as eventargs)
labelprova.text = session.item(con_utente)
End sub

il compilatore mi segnala che con_utente (il dato salvato nella pagina precedente) non è dichiarato.
E' chiaro che manca qualcosa....

Grazie, Maurizio.

Jok83 Profilo | Junior Member

Ok io faccio così:

pagina 1 :
' qui in qualche modo prendi il tuo con_utente..non so se è in un dataset o in una text o in una grid ma non importa a noi interessa salvarlo e si fa così
session.add("UtenteCod",ds.tables("miatabella").row(0).item(2)) ' "UtenteCod è il nome che identifica il dato salvato nella sessione, mentre il valore in questo caso ho supposto di 'averlo nel dataset alla riga 0 colonna 2 ma potrebbe essere quello che vuoi txtutente.text,una stringa messa al momento "NOME" ecc

Pagina 2 :
' qui devo recuperare il dato salvato nel tuo caso in una query
dim sel as string ="Select * from tabella2 where cod_utente=@cod"
dim cmd as new sqlclient.sqlcommand(sel,cn)
cmd.parameters.addwithvalue("@cod",session.item("UtenteCod")) ' lo recupero chiamando il campo in sessione con lo stesso nome salvato chiramente ne puoi fare quello che vuoi una volta salvato...


mauri1961 Profilo | Senior Member

In realtà ora nella page_load mettendo quella labelprova

labelprova.text = session.item(con_utente) riesco a visualizzare sulla seconda pagina il codice passato

quello che mi manca è solamente inserire nelle select della gridview il test where dit_studio = con_utente
tuttavia mi si schianta dicendo che c'è errore di sintassi nei pressi della clausola where

Grazie ancora, Maurizio

Jok83 Profilo | Junior Member

mmmh ma come la carichi la grid?
dove e come componi la select, se puoi posta un esempio..
o se lo fai da oggetto devi mettere il parametro dalla session...

mauri1961 Profilo | Senior Member

Ti allego il codice della seconda pagina (non è lungo), tieni conto che il campo LINKFIELD è quello che contiene il valore passato dalla pagina 1 (e passa correttamente).

la stessa gridview levando il test where ecc... funziona correttamente se lo inserisco ora mi dice
campo LINKFIELD non valido.

Grazie, Maurizio

Jok83 Profilo | Junior Member

Ok allora manca nel tuo Sqldatasource1 la clausula where con un parametro che faccia riferimento al valore salvato in sessione, quindi quando toglievi la clausula where ti compilava si la grid ma nn ti faceva il filtro e pescava tutto, per farlo devi aggiungere un parametro nella where e diventa così:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CASSAWEBConnectionString %>"
SelectCommand="SELECT [DIT_CODICE], [DIT_RAGSOC], [DIT_TITOLARE], [DIT_STUDIO], [DIT_ATTIVITA], [DIT_SOSPENSIONE], [DIT_BNI] FROM [WEB_IMPR] WHERE DIT_codcons=@LINKFIELD">
<SelectParameters>
<asp:SessionParameter DefaultValue="%" Name="LINKFIELD" SessionField="LINKFIELD" />
</SelectParameters>
</asp:SqlDataSource>

oppure da progetto se clicchi sul sqldatasource quando configuri l'origine dati, passi la schermata della connessione, e nella select (se la scrivi a mano) scrivi nelle where DIT_codcons=@LINKFIELD (dove @Linkfield è il nome del parametro da sostituire con il valore) vai avanti e nella tab definisci parametri dobbiamo dirgli che lo prendiamo dalla session; quindi origine parametro nella combo metti session e session field: nomeparametro quindi LINKFIELD e defaultvalue metto % se è un testo o 0 o quello che vuoi di default.
Se invece la select la crei dalla "guidata" devi aggiungere il parametro e poi è uguale a sopra...
spero di essere stato comprensbile anch'io nn è che lo uso tantissimo...

mauri1961 Profilo | Senior Member

ok funziona !!!!! grazie, Maurizio
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5