Ottieni dati POST in C # / ASP.NET

Sto cercando di ottenere dati POST, ma non ho fortuna. Il mio codice è sotto Quando faccio clic sul pulsante del modulo non succede nulla.

Mi aspettavo che il mio IDE scattasse su A.Ret() , ma non succede nulla.

File Test.cs

 using System.Web; public class A { public static string ret() { var c = HttpContext.Current; var v = c.Request.QueryString; // <-- I can see get data in this return c.Request.UserAgent.ToString(); return c.Request.UserHostAddress.ToString(); return "woot"; } } 

File Default.aspx

     Untitled Page   
a

Prova a usare:

 string ap = c.Request["AP"]; 

Che legge dai cookie, form, query string o variabili del server.

In alternativa:

 string ap = c.Request.Form["AP"]; 

per leggere solo dai dati del modulo.

c.Request["AP"] leggerà i valori pubblicati. Inoltre è necessario utilizzare un pulsante di invio per inviare il modulo:

  

invece di

  

Sono un po ‘sorpreso che questa domanda sia stata posta tante volte prima, ma la soluzione più riutilizzabile e amichevole non è stata documentata.

Spesso ho pagine Web che utilizzano AngularJS e quando faccio clic su un pulsante Salva, inserisco “POST” questi dati nella mia pagina .aspx o nel gestore .ashx per salvarli nel database. I dati saranno sotto forma di un record JSON.

Sul server, per trasformare i dati grezzi pubblicati in una class C #, ecco cosa farei.

Innanzitutto, definisci una class C # che conterrà i dati pubblicati.

Supponiamo che la mia pagina Web stia postando dati JSON come questo:

 { "UserID" : 1, "FirstName" : "Mike", "LastName" : "Mike", "Address1" : "10 Really Street", "Address2" : "London" } 

Quindi definirei una class C # come questa …

 public class JSONRequest { public int UserID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } } 

(Queste classi possono essere nidificate, ma la struttura deve corrispondere al formato dei dati JSON. Quindi, se stai postando un record utente JSON, con un elenco di record di ordine al suo interno, la tua class C # dovrebbe contenere anche un List<> di record di ordine.)

Ora, nel mio file .aspx.cs o .ashx, ho solo bisogno di fare questo, e lasciare JSON.Net per fare il duro lavoro …

  protected void Page_Load(object sender, EventArgs e) { string jsonString = ""; HttpContext.Current.Request.InputStream.Position = 0; using (StreamReader inputStream = new StreamReader(this.Request.InputStream)) { jsonString = inputStream.ReadToEnd(); } JSONRequest oneQuestion = JsonConvert.DeserializeObject(jsonString); 

E questo è tutto. Ora hai una class JSONRequest contenente i vari campi che sono stati inviati al server.

Quanto segue è OK in HTML4, ma non in XHTML. Controlla il tuo editore