【问题标题】:Get POST data in C#/ASP.NET在 C#/ASP.NET 中获取 POST 数据
【发布时间】:2009-06-10 16:09:55
【问题描述】:

我正在尝试获取 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";
    }
}

文件默认.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>

【问题讨论】:

  • 我不确定我是否关注...您要从哪里获取 POST 数据?
  • 这段代码没有意义。你想达到什么目的?
  • 不要尝试获取 POST 数据,将控件标记为 runat="server",然后通过这种方式获取值。
  • rball:我如何获得“那个”的价值?我是一个完全的新手。 Blixt:当我单击提交时,表单应该正在发布数据。就像它在 PHP 中的表现以及我今天之前所做的所有 HTML 代码一样。

标签: c# asp.net


【解决方案1】:

尝试使用:

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

从 cookie、表单、查询字符串或服务器变量中读取。

或者:

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

只读取表单的数据。

【讨论】:

    【解决方案2】:

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

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

    而不是

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

    【讨论】:

    • 我意识到这已经很老了,但它也帮助了我......虽然我使用的是 VB......'Dim sku As String = Request("sku")'......谢谢!
    【解决方案3】:

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

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

    在服务器上,要将原始发布的数据转换回 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 用户记录,其中包含订单记录列表,您的 C# 类还应包含List&lt;&gt; 的订单记录。)

    现在,在我的 .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 类,其中包含已发布到您的服务器的各种字段。

    【讨论】:

      【解决方案4】:

      以下内容在 HTML4 中可以,但在 XHTML 中不行。检查你的编辑器。

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

      【讨论】:

        猜你喜欢
        • 2018-02-26
        • 2010-11-19
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2013-06-20
        相关资源
        最近更新 更多