2009-02-19 13 views
101

Tengo un formulario de inicio de sesión 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.Leer datos enviados a ASP.Net Formulario

Tengo un nuevo requisito para permitir que el usuario ingrese el nombre de usuario y la contraseña de una página html simple separada que no forme parte de mi aplicación asp.net. Planeo lograr esto utilizando html estándar: formulario, entrada, botón de envío, etc. La acción de formulario será la URL de mi página de inicio de sesión 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 asp.net, presumiblemente en el evento Page_Load, es comprobar si la solicitud de la página contiene un nombre de usuario y contraseña que se pasan. Si entonces necesito 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. Si no, mostraré el formulario de inicio de sesión como de costumbre.

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

Respuesta

136

Leer la Request.Form NameValueCollection y procesar su lógica 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 de la página de publicación.

+0

¿Qué hay de las matrices de bytes? ¿Tendría una cadena así y luego la convertiría en una matriz de bytes, o qué? Estoy cargando un archivo en el servidor. – Fallenreaper

+2

¿Por qué iterar sobre un nombrevaluecollection en lugar de verificar la solicitud directamente para cada nombre de control? – Howiecamp

+0

@Howiecamp alguna vez encontró la respuesta a esa pregunta? Estoy intrigado también. – tfrascaroli

12
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 manera. Si no es nulo o está vacío, existe, luego inicie sesión en el usuario (no recuerdo los pasos exactos para la membresía de ASP.NET, suponiendo que eso es lo que está usando).

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

Proporcione una referencia adecuada de su respuesta para que sea más factible. –

Cuestiones relacionadas