Leia os dados da postagem enviados ao formulário ASP.Net

109

Eu tenho um formulário de login em funcionamento em um aplicativo asp.net. Coisas padrão com uma caixa de texto de nome de usuário e senha e um botão para processar o login. Funciona bem.

Eu tenho um novo requisito para permitir que o usuário insira o nome de usuário e a senha de uma página html simples separada que não faz parte do meu aplicativo asp.net. Pretendo conseguir isso usando html padrão - formulário, entrada, botão de envio, etc. A ação do formulário será a URL da minha página de login do asp.net e seu método será POST.

O que eu quero fazer no código C # por trás da página do formulário de login asp.net, presumivelmente no evento Page_Load, é verificar se a solicitação da página contém um valor de nome de usuário e senha sendo transmitidos. para ler esses valores e processar o login como se alguém tivesse clicado no botão de login na página asp.net. Caso contrário, exibirei o formulário de login como de costume.

Como verifico a existência e leio os valores de nome de usuário e senha na solicitação de minha página.

Daveywc
fonte

Respostas:

151

Leia Request.Form NameValueCollection e processe sua lógica de acordo:

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);

... onde "txtUserName" e "txtPassword" são os nomes dos controles na página de postagem.

Cerebrus
fonte
E quanto a matrizes de bytes? Você teria uma string como essa e depois a converteria em uma matriz de bytes ou o quê? Estou enviando um arquivo para o serve.r
Fallenreaper
2
Curioso para saber por que iterar sobre uma coleção de valores de nomes em vez de verificar a solicitação diretamente para cada nome de controle?
Howiecamp de
@Howiecamp já encontrou a resposta para essa pergunta? Estou intrigado também.
tfrascaroli
ISTO! Eu estava depurando por 5 horas tentando descobrir por que diabos eu não consigo obter os dados deste formulário.
Callat
13
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... }

nome de usuário é o nome da entrada na página de envio. A senha pode ser obtida da mesma forma. Se não for nulo ou vazio, ele existe, então faça o login do usuário (não me lembro das etapas exatas para Associação do ASP.NET, supondo que seja o que você está usando).

John Sheehan
fonte
3
NameValueCollection nvclc = Request.Form;
string   uName= nvclc ["txtUserName"];
string   pswod= nvclc ["txtPassword"];
//try login
CheckLogin(uName, pswod);
gdmanandamohon
fonte
Dê uma referência adequada de sua resposta para que seja mais viável.