2009-02-19 14 views
101

Ho un modulo di accesso funzionante in un'applicazione asp.net. Roba standard con una casella di testo nome utente e password e un pulsante per elaborare il login. Funziona bene.Leggi messaggio Dati inviati al modulo ASP.Net

Ho un nuovo requisito per consentire all'utente di inserire nome utente e password da una pagina html separata che non fa parte della mia applicazione asp.net. Ho in programma di ottenere questo utilizzando html standard - modulo, input, pulsante di invio, ecc. L'azione modulo sarà l'URL della mia pagina di accesso asp.net e il suo metodo sarà POST.

Quello che voglio fare nel codice C# dietro il modulo di login di asp.net, presumibilmente nell'evento Page_Load, è quello di verificare se la richiesta per la pagina contiene un nome utente e un valore di password passati. Se quindi ho bisogno di leggere quei valori ed elaborare il login come se qualcuno avesse cliccato sul pulsante di accesso sulla pagina di asp.net. In caso contrario, visualizzerò il modulo di accesso come al solito.

Come verificare l'esistenza e la lettura dei valori di nome utente e password nella richiesta per la mia pagina.

risposta

136

Leggi il Request.Form NameValueCollection ed elaborare la logica conseguenza:

NameValueCollection nvc = Request.Form; 
string userName, password; 
if (!string.IsNullOrEmpty(nvc["txtUserName"])) 
{ 
    userName = nvc["txtUserName"]; 
} 

if (!string.IsNullOrEmpty(nvc["txtPassword"])) 
{ 
    password = nvc["txtPassword"]; 
} 

//Process login 
CheckLogin(userName, password); 

... dove "txtUserName" e "txtPassword" sono il Nomi dei controlli sulla pagina di invio messaggi.

+0

E gli array di byte? Avresti una stringa del genere e poi convertirai in un array di byte, o cosa? Sto caricando un file sul server.r – Fallenreaper

+2

Curioso perché eseguire iterazioni su una raccolta di nomi di dominio piuttosto che controllare direttamente la richiesta per ogni nome di controllo? – Howiecamp

+0

@Howiecamp ha mai trovato la risposta a questa domanda? Sono intrigato anche io. – tfrascaroli

12
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... } 

nome utente è il nome dell'input nella pagina di invio. La password può essere ottenuta allo stesso modo. Se non è nullo o vuoto, esiste, quindi accedi all'utente (non ricordo i passaggi esatti per l'iscrizione ad ASP.NET, assumendo che sia quello che stai usando).

2
NameValueCollection nvclc = Request.Form; 
string uName= nvclc ["txtUserName"]; 
string pswod= nvclc ["txtPassword"]; 
//try login 
CheckLogin(uName, pswod); 
+0

Fornisci un riferimento appropriato della tua risposta in modo che sia più fattibile. –

Problemi correlati