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

24 c# asp.net

我想获取POST数据,但我没有运气.我的代码如下.当我单击表单按钮时没有任何反应.

我预计至少我的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";
    }
}
Run Code Online (Sandbox Code Playgroud)

文件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>
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 43

尝试使用:

string ap = c.Request["AP"];
Run Code Online (Sandbox Code Playgroud)

这可以从cookie,表单,查询字符串或服务器变量中读取.

或者:

string ap = c.Request.Form["AP"];
Run Code Online (Sandbox Code Playgroud)

只是从表格的数据中读取.


Dar*_*rov 32

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

<input type="submit" value="Submit" />
Run Code Online (Sandbox Code Playgroud)

代替

<input type=button value="Submit" />
Run Code Online (Sandbox Code Playgroud)


Mik*_*ill 5

我有点惊讶这个问题之前已经被问过很多次了,但是最可重用和最友好的解决方案还没有被记录下来。

我经常有使用 AngularJS 的网页,当我单击“保存”按钮时,我会将这些数据“POST”回我的 .aspx 页面或 .ashx 处理程序以将其保存回数据库。数据将采用 JSON 记录的形式。

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

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

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

{
    "UserID" : 1,
    "FirstName" : "Mike",
    "LastName" : "Mike",
    "Address1" : "10 Really Street",
    "Address2" : "London"
}
Run Code Online (Sandbox Code Playgroud)

然后我会像这样定义一个 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; }
}
Run Code Online (Sandbox Code Playgroud)

(这些类可以嵌套,但结构必须与 JSON 数据的格式匹配。因此,如果您要发布 JSON 用户记录,其中包含订单记录列表,则您的 C# 类还应包含List<>订单记录.)

现在,在我的 .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);
Run Code Online (Sandbox Code Playgroud)

就是这样。您现在有一个JSONRequest包含各种字段的类,这些字段已发布到您的服务器。