在C#/ ASP.NET中获取POST数据

我正在尝试获取POST数据,但是我没有运气。 我的代码如下。 当我点击表单button没有任何反应。

我预计至less我的IDE在A.Ret() ,但没有任何反应。

文件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

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="aspnetCSone._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server" method="post" action="Default.aspx"> <input type=hidden name="AP" value="99" /> <input type=button value="Submit" /> <div> <a id="aa">a</a> <% = A.ret() %> </div> </form> </body> </html> 

尝试使用:

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

从cookies,表单,查询string或服务器variables读取。

或者:

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

从表单的数据中读取。

c.Request["AP"]将读取发布的值。 您还需要使用提交button来发布表单:

 <input type="submit" value="Submit" /> 

代替

 <input type=button value="Submit" /> 

我有点惊讶,这个问题以前曾经被问过很多次,但是最重复和友好的解决scheme还没有被logging下来。

我经常有使用AngularJS的网页,当我点击一个保存button时,我会将这些数据“POST”回到我的.aspx页面或.ashx处理程序,将其保存回数据库。 数据将以JSONlogging的forms出现。

在服务器上,将原始的发布数据转换回C#类,这是我要做的。

首先,定义一个包含发布数据的C#类。

假设我的网页发布了这样的JSON数据:

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

然后我会定义一个这样的C#类…

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

(这些类可以嵌套,但是结构必须匹配JSON数据的格式,所以,如果你发布了一个JSON用户logging,并在其中包含一个Orderlogging列表,你的C#类也应该包含一个List<>的订单logging。)

现在,在我的.aspx.cs或.ashx文件中,我只需要执行此操作,并让JSON.Net来完成这项艰巨工作。

  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<JSONRequest>(jsonString); 

就是这样。 您现在有一个JSONRequest类,其中包含发送到您的服务器的各个字段。

以下是在HTML4中,但不是在XHTML中。 检查你的编辑器。

 <input type=button value="Submit" />