在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" />
- HttpRuntime.Cache和HttpContext.Current.Cache之间的区别?
- SignalR 2.0错误:无法加载文件或程序集Microsoft.Owin.Security
- 解决“指定的string不是主题所需的格式”。
- ViewStateMode与EnableViewState
- 什么是IIS / ASP.NET的所有用户帐户,它们有什么不同?
- ASP.NET MVC – 如何在login页面显示未经授权的错误?
- ASP.NET MVC – 获取QueryString值
- ASP.NET Web API – 不允许PUT&DELETE动词 – IIS 8
- LINQ to SQL Where子句可选标准