Подтвердить что ты не робот

Получить данные POST в С#/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";
    }
}

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

Ответ 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" />

Ответ 3

В HTML4 есть только ОК, но не в XHTML. Проверьте свой редактор.

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

Ответ 4

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

У меня часто есть веб-страницы, использующие AngularJS, и когда я нажимаю на кнопку "Сохранить", я "ПОЧТАЮ" эти данные обратно на мою страницу .aspx или .ashx, чтобы сохранить это обратно в базу данных. Данные будут в форме записи JSON.

На сервере, чтобы вернуть исходные данные обратно в класс С#, вот что я буду делать.

Сначала определите класс С#, который будет содержать опубликованные данные.

Предположим, что моя веб-страница публикует данные JSON следующим образом:

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

Тогда я бы определил класс С#, как этот...

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, со списком записей заказов внутри нее, ваш класс С# также должен содержать 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, содержащий различные поля, которые были отправлены на ваш сервер.