Получить данные POST в C # / ASP.NET - PullRequest
24 голосов
/ 10 июня 2009

Я пытаюсь получить данные 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";
    }
}

Файл 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>

Ответы [ 4 ]

43 голосов
/ 10 июня 2009

Попробуйте использовать:

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

Считывает из файлов cookie, формы, строки запроса или серверных переменных.

В качестве альтернативы:

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

только для чтения из данных формы.

32 голосов
/ 10 июня 2009

c.Request["AP"] будет читать опубликованные значения. Также вам необходимо использовать кнопку отправки для отправки формы:

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

вместо

<input type=button value="Submit" />
1 голос
/ 13 августа 2015

Я немного удивлен, что этот вопрос задавался много раз раньше, но наиболее многократно используемое и дружественное решение не было задокументировано.

У меня часто есть веб-страницы, использующие 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 со списком записей Order внутри нее, ваш класс 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);

И это все. Теперь у вас есть класс JSONRequest, содержащий различные поля, которые были размещены на вашем сервере.

0 голосов
/ 17 июня 2013

Следующее нормально в HTML4, но не в XHTML. Проверьте свой редактор.

<input type=button value="Submit" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...