Leer los datos de la publicación enviados al formulario ASP.Net


109

Tengo un formulario de inicio de sesión que funciona en una aplicación asp.net. Material estándar con un cuadro de texto de nombre de usuario y contraseña y un botón para procesar el inicio de sesión. Funciona bien.

Tengo un nuevo requisito para permitir que el usuario ingrese el nombre de usuario y la contraseña desde una página html simple separada que no es parte de mi aplicación asp.net. Planeo lograr esto usando html estándar: formulario, entrada, botón de envío, etc. La acción del formulario será la URL de mi página de inicio de sesión de asp.net y su método será POST.

Lo que quiero hacer en el código C # detrás de la página del formulario de inicio de sesión de asp.net, presumiblemente en el evento Page_Load, es verificar si la solicitud de la página contiene un nombre de usuario y un valor de contraseña. Si es así, entonces necesito para leer esos valores y procesar el inicio de sesión como si alguien hubiera hecho clic en el botón de inicio de sesión en la página asp.net. De lo contrario, mostraré el formulario de inicio de sesión como de costumbre.

¿Cómo verifico la existencia y leo los valores de nombre de usuario y contraseña en la solicitud de mi página?

Respuestas:


151

Lea Request.Form NameValueCollection y procese su lógica en consecuencia:

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

... donde "txtUserName" y "txtPassword" son los nombres de los controles en la página de publicación.


¿Qué pasa con las matrices de bytes? ¿Tendría una cadena como esa y luego la convertiría en una matriz de bytes, o qué? Estoy subiendo un archivo a serve.r
Fallenreaper

2
¿Tiene curiosidad por qué iterar sobre una colección de valores de nombre en lugar de verificar la solicitud directamente para cada nombre de control?
Howiecamp

@Howiecamp alguna vez encontró la respuesta a esa pregunta? También estoy intrigado.
tfrascaroli

¡ESTA! Estuve depurando durante 5 horas sólidas tratando de averiguar por qué diablos no puedo sacar los datos de este formulario.
Llamado el

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

nombre de usuario es el nombre de la entrada en la página de envío. La contraseña se puede obtener de la misma forma. Si no es nulo o vacío, existe, entonces inicie sesión con el usuario (no recuerdo los pasos exactos para la Membresía ASP.NET, asumiendo que eso es lo que está usando).


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

Da una referencia adecuada de tu respuesta para que sea más factible.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.