Почему я получаю разные результаты от метода отправки формы «GET» от метода «POST» в следующем? - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть следующий код HTML / ASP.NET:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Ny test</title>
    <link rel="stylesheet" type="text/css" href="StyleSheet.css" />
</head>
<body>

    <form action="Default.aspx" runat="server" method="post">

    Name: <input type="text" id="navn" runat="server"/>
    <input type="submit" id="submit" value="Submit!" runat="server" />
    <input type="reset" />
    <br />

    <%if (Request.Form["submit"] != null)
      {
          Response.Write("<br/>");
          Response.Write("Submit button pushed");
      }
      if (Request.Form["navn"] != null && Request.Form["navn"] != "")
      {
          Response.Write("<br/>");
          Response.Write("Name OK");
      } 
    %>
    </form>
</body>
</html>

При использовании метода post формы POST я получаю следующий вывод:

Кнопка отправки нажата Имя ОК

При использовании метода "GET" после публикации НИЧЕГО не распечатывается?!

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

Request.Form содержит информацию, отправленную с использованием POST. При использовании GET информация будет в коллекции Request.QueryString. В вашем случае это означает, что Request.Form["submit"] равно null.

Если вы хотите поддерживать оба варианта, вы можете использовать коллекцию Request.Item, которая включает значения из:

  • Request.Cookies
  • Request.Form
  • Request.QueryString
  • Request.ServerVariables

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

1 голос
/ 16 декабря 2011

Для обработки POST и GET с вашим кодом вы можете просто удалить .Form, т.е. заменить Request.Form["navn"] на Request["navn"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...