2017-08-16 8 views
0

情報を処理するためにフォームを送信するときに、複数の入力があるフォームがあります。HTMLフォームからリクエストフォームを取得できません

これは形式です:私は「page.aspx」へのURLを、それを送信するときのデータを示して次に

<form id="form1" action="page.aspx" method="get"> 
     <input type="text" name="idP" id="idP" value="123456789" /> 
... 
     </form> 

localhost/page?idP=123456789 

しかし、私のようにコードからそれらを読んしようとすると、 :

string[] keys = Request.Form.AllKeys; 
      for (int i = 0; i < keys.Length; i++) 
      { 
       Response.Write(keys[i] + ": " + Request.Form[keys[i]] + "<br>"); 
      } 

それは何も印刷されない、とAllKeysが0値として示し、私は「ポスト」の方法だけでなく、何もしてみました。

私は間違っていますか?

+2

'Request.QueryString'で' idP'の値を取得できます – TheValyreanGroup

答えて

1

POSTおよびPUTとは異なり、GETリクエストにはボディがないため、フォーム値はクエリ文字列で送信する必要があります。これはURI:localhost/page?idP=123456789で確認できます。

だから、あなたは次のようなものを使用する必要があります:

var idP = Request.QueryString["idP"]; 

Request.Form要求から値を取得します。 documentationから:HTTPリクエストのContent-Typeの値が "アプリケーション/ x-www-form-urlencodedで" または "マルチパート/フォームデータ" のいずれかである場合

フォームプロパティが移入されます。

あなたのリクエストヘッダーを見ると、Content-Type a)が完全に欠落しているか、b)がそれらのいずれでもないことがわかります。したがって、ここでそれを使用することは適切ではありません。

:技術的には、GETリクエストには本体がありますが、HTTP仕様ではサーバーはそれを無視する必要があります。詳細については、this answerを参照してください。