2009-09-29 21 views
14

Genero dinámicamente un formulario HTML que se envía a una página web .aspx. ¿Cómo determino en la página resultante qué nombres de variables se enviaron y cuáles fueron los valores? Usando: Solicitud ["VarName"]. ToChar(); Funciona, pero supone que conozco todos los nombres de variables. ¿Cómo puedo obtener los nombres y valores?C# - Cómo enumerar los nombres de las variables y los valores publicados en la página ASPX

Idealmente, la solución sería trabajar tanto para POST y GET presentaciones ...

Gracias!

Respuesta

29

¿Ha intentado algo como esto:

Para solicitud de mensaje:

foreach(string key in Request.Form.Keys) 
{ 
    Response.Write (Request.Form[key]); 
} 

Para una petición GET:

foreach(string key in Request.QueryString.Keys) 
{ 
    Response.Write (Request.QueryString[key]); 
} 
+0

que funcionó después de cambiar a Request.Form.keys Request.Form.Keys, y similar para Request.QueryString.Keys. ¡Gracias! – NYARROW

+0

Lo siento. He llegado a confiar en ese intellisense para solucionar los problemas de mi caso en gran medida. =) Solucionado en la respuesta. – JohnFx

6

Cada uno de Request.Cookies, Request.Form, Request.QueryString y Solicitud. ServerVariables es un NameValueCollection o similar. Puede pedirle a cada uno de ellos sus claves y continuar desde allí.

foreach (string key in Request.QueryString.Keys) 
{ 
    string value = Request.QueryString[key]; 
    // etc 
} 

Muy a qué colecciones que necesita dependerá del propósito de esto - si es sólo para el diagnóstico, estaría tentado a volcar a todos.

+1

Quizás quiso decir "Request.QueryString [key]"? – JohnFx

+0

Gracias, arreglado :) –

1

No lea de la colección Request, que es una colección compuesta que contiene los valores de forma y querystring, pero también las cookies y las variables del servidor. Lea de las colecciones específicas de donde desea los datos, es decir, Request.Form (para POST) y Request.QueryString (para GET).

Así es como se puede obtener todas las claves y valores en una cadena: Método

StringBuilder builder = new StringBuilder(); 
builder.AppendLine("Form values:"); 
foreach (string key in Request.Form.Keys) { 
    builder.Append(" ").Append(key).Append(" = ").AppendLine(Request.Form[key]); 
} 
builder.AppendLine("QueryString values:"); 
foreach (string keu in Request.QueryString.Keys) { 
    builder.Append(" ").Append(key).Append(" = ").AppendLine(Request.QueryString[key]); 
} 
string values = builder.ToString(); 
4

de JohnFx funciona bien. También puede incluir la cadena de consulta, variable de servidor y datos de las cookies en la mezcla utilizando la colección Request.Params, como en:

foreach(string key in Request.Params.Keys) 
{ 
    Response.Write(String.Format("{0}: {1}<br />", key, Request.Params[key])); 
} 

Es necesario tener cuidado al usar la colección Request.Params. Si una variable QUERYSTRING y una variable FORM comparten la clave "Nombre" y tienen los valores "Val1" y "Val2", entonces el valor de Request.Params["Name"] será "Val1, Val2".

0

Debe usar Request.Form como una colección. Tenga en cuenta que los parámetros multivalor (una selección múltiple) se convierten en una colección ellos mismos. Hay un ejemplo en this page.

0

En la declaración de la .ASPX Add Trace = 'True'

<%@ Page Language="VB" Trace="True" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 
0

Además de las respuestas anteriores, si desea combinar colección de cadena de consulta, formulario, ServerVariables y artículos Galletas, entonces el La mejor manera es usar HttpRequest.Params

0

En la declaración del.ASPX Add Trace = 'True'

<%@ Page Language="CS" Trace="True" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

usted será capaz de ver los datos de formularios, sesiones, etc. Datos de aplicación

Cuestiones relacionadas