2010-01-29 12 views
33

Sto usando C# con ASP.NET.Ottenere una variabile POST

Come verificare se un parametro è stato ricevuto come variabile POST?

Ho bisogno di fare diverse azioni se il parametro è stato inviato tramite POST o tramite GET.

risposta

76

Utilizzare questo per i valori GET:

Request.QueryString["key"] 

E questo per POST Valori

Request.Form["key"] 

Inoltre, questo funzionerà se non si cura se proviene da GET o POST, oppure il HttpContext.Items collezione:

Request["key"] 

Un'altra cosa da notare (se ne avete bisogno) è che si può verificare il tipo di richiesta utilizzando:

Request.RequestType 

Quale sarà il verbo utilizzato per accedere alla pagina (in genere GET o POST). Request.IsPostBack di solito funziona per controllare questo, ma solo se la richiesta POST include i campi nascosti aggiunti alla pagina dal framework ASP.NET.

+2

Non userei Richiesta ["chiave"] ... poiché questa è la raccolta Articoli e ottiene un elenco di tutti gli oggetti memorizzati nel contesto della pagina. Ciò includerebbe anche i valori dei cookie. – Darren

5

Utilizzare il

Request.Form []

per le variabili POST,

Request.QueryString []

per GET.

2

Oltre all'utilizzo di Request.Form e Request.QueryString e in base al proprio scenario specifico, potrebbe anche essere utile verificare la proprietà IsPostBack di Page.

if (Page.IsPostBack) 
{ 
    // HTTP Post 
} 
else 
{ 
    // HTTP Get 
} 
+1

non corretto, IsPostBack è true se il modulo viene inviato tramite GET o POST. La denominazione non riflette la funzionalità – sarepta

Problemi correlati