Leggi i dati dei post inviati al modulo ASP.Net


109

Ho un modulo di accesso funzionante in un'applicazione asp.net. Elementi standard con una casella di testo nome utente e password e un pulsante per elaborare il login. Funziona bene.

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

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

Come posso verificare l'esistenza e leggere i valori di nome utente e password nella richiesta della mia pagina.

Risposte:


151

Leggi Request.Form NameValueCollection ed elabora la tua logica di 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 i nomi dei controlli nella pagina di pubblicazione.


E gli array di byte? Avresti una stringa del genere e poi la convertiresti in un array di byte, o cosa? Sto caricando un file su serve.r
Fallenreaper

2
Curioso perché iterare su una raccolta del valore del nome anziché controllare la richiesta direttamente per ogni nome di controllo?
Howiecamp

@ Howiecamp ha mai trovato la risposta a questa domanda? Anch'io sono incuriosito.
tfrascaroli

QUESTO! Ho eseguito il debug per 5 ore solide cercando di capire perché diavolo non riesco a ottenere i dati da questo modulo.
Callat

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

username è 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'appartenenza ad ASP.NET, supponendo che sia quello che stai utilizzando).


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

Fornisci un riferimento appropriato alla tua risposta in modo che sia più fattibile.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.