2010-12-30 5 views
6

これらの入力配列をasp.netで正しく受け取るにはどうすればよいですか? PHPでPHPなどのRequest.Formを使用したHTML入力要素の配列の処理

<input type=hidden name='field[name][]' value='alex' /> 
<input type=hidden name='field[name][]' value='mark' /> 
<input type=hidden name='field[name][]' value='helen' /> 

<input type=hidden name='field[age][]' value='22' /> 
<input type=hidden name='field[age][]' value='30' /> 
<input type=hidden name='field[age][]' value='29' /> 

あなたは$field = $_POST["field"]

$field["name"]$field["age"]によってフィールドにアクセスすることができ、単純に名前と年齢を含む配列です。

答えて

4

標準の文字列分割を使用することができます。これはすべてのPHPがあなたのために行うことです。 PHPは強く型付けされた言語ではありませんが、この機能の「外観」を提供するのがより簡単です。

現実には、phpはカンマで区切られた入力を提供するだけで、自動的にそれを分割します。

これをasp.netでやりたいのであれば、同じ入力名を何度も使用することができ、要求オブジェクトと共にコンマ区切りのリストとして返されます。このアプローチをユーザー入力の入力に使用することはお勧めできませんが、jqueryスクリプトの隠れた入力にリストを結合するような入力をしている場合は問題ありません。

PHPの場合、すべてのWeb開発者が同じhttpルールを使用していますが、何か起こっていることを頭でお知りになりたい場合は、入力があるフォームを投稿する(runatサーバーを設定しないでください) 。 pageloadで

<input type="text" name="MyTest" value="MyVal1" /> 
<input type="text" name="MyTest" value="MyVal2" /> 

あなたが画面上に

MyVal1、MyVal2

が表示されるはずです。この

if(IsPostBack) 
{ 
    Response.Write(Request["MyTest"]); 
} 

を追加します。あなたは配列にこれをしたい場合は

さて、次のことができます。あなたがしたい場合

string[] myvals = Request["MyTest"].Split(','); 

整数または他のデータ型(PHPが/知っているデータ型が本当に何であるかを気にしない)、あなたがする必要がありますそれをループし、別の配列/ジェネリックリストに解析します。

私はあなたの最終結果として何を望んでいるのかわかりませんが、ブラウザが返信した内容を理解することが第一歩であり、短い答えは...

はい、ASP.NETはこれを(少し手作業で)行うことができます。

0

これらは、ではなく、の入力配列です。 HTMLには配列の概念はありません。

これらは単に同じ名前の入力のグループです。

達成しようとしていることは何ですか?なぜサーバー側のコントロールを使用していないのですか?


更新:

あなたはRequest.Formsコレクションにアクセスすることができます - それは投稿フォーム要素を保持します。

また、サーバー側のコントロールを使用すると、IDでアクセスできます。

+0

を使用することができます。私は質問の主題を変更しました。したがって、PHPは入力を解釈する方法をあなたに提供します。それで、asp.netにはそういったことがあるのでしょうか、私は自分の通訳を書く必要がありますか?サーバー側のコントロールについて。私自身のサーバーコントロールを開発しているので、それはそれより複雑です。 – EBAG

27

実際にはasp.netに存在します。 - あなたはうーん、私が今見ることができます

string[] MyTest = Request.Form.GetValues("MyTest"); 

または

string[] MyTest = Request.QueryString.GetValues("MyTest"); 
+0

これは正しい方法です、ASP.NETは投稿された各入力に対して分割を行います。 String.Split( '、')関数を使用すると、誰かがカンマ(「ニューヨークプラザ、ニューヨーク、NY 10004」のようなアドレス)のような文字列を入れると間違っています。 –

+1

私はこれを知らなかったと信じられない、私は毎日何か新しいことを学ぶ! –

+0

これは受け入れられる回答であるはずです。 – crush

関連する問題