回答者の皆様にはいつもお世話になっています。
ASP.NET MVC3の案件で、外部からのPOST送信を受信する仕様が追加されため、アクションメソッドを実装しているのですが、うまくいきません。
さんざん問い合わせたあげく、先方の送信フォームがこのようになっていることがわかりました。
<form method="post" action="http://xxxxx/recieve">
<input name="cbox[]" value="東京" checked="checked"/>
<input name="cbox[]" value="大阪" checked="checked"/>
<input name="cbox[]" value="京都"/>
</form>
phpなどではこの場合、変数cboxに配列値 {"東京","大阪"}が入るらしいのですが、ASP.NET MVCではどう受信したらいいのでしょう?
public ActionResult Recieve(List<string> cbox){
// cboxの内容が{"東京"}(要素1個のリスト)になってしまいます
};
どなたかお助けください。ヘルプです!
No.1ベストアンサー
- 回答日時:
こんにちは
言われてみればありそうなケースなので実験しましたが、このフォーマットのフォームは受信できませんね(苦笑
というか、質問のHTMLはphp専用の書き方だと思います。
CGIでも、JSPでも配列では受信できません。ASP.NET MVCだけの問題ではない。
ASP.NET MVCで、List<string>やstring[]で受信したい場合は、いずれかの書式で送信してもらってください。
<input name="cbox[0]" value="東京" checked="checked"/>
<input name="cbox[1]" value="大阪" checked="checked"/>
<input name="cbox[2]" value="京都"/>
<input name="cbox" value="東京" checked="checked"/>
<input name="cbox" value="大阪" checked="checked"/>
<input name="cbox" value="京都"/>
推奨は空白値を自動削除する後者。
ちなみに、checkedが"東京"のみの場合、phpでは(配列でなく)自動的に単数値送信なるようです。これはこれで凄いというか…流石のphp仕様
言語によってフォーム形式が異なるというのは困ったものですよね。
php特有の記法だと主張して先方に変更してもらいました。
<input name="cbox" value="東京" checked="checked"/>
<input name="cbox" value="大阪"/>
<input name="cbox" value="京都"/>
のような単項目の選択でも、ASP.NET MVCではList<string>できっちり取得できました。
今後はこれで行こうと思います。
No.2
- 回答日時:
もし、相手側のHTMLがどうしても修正不可、というのであれば。
アクションメソッドの引数でデータを取ろうとせず、アクションメソッドの内部でリクエストされた値を自分で解析して取得する、という方法が取れる「かも」しれません。
引数としてうまくとれないのは標準のモデルバインダーがそのような値をうまく扱ってくれないため、と考えられるので、モデルバインダーをカスタマイズする、という方法もとれる「かも」しれません。
#どちらの方法についても未確認です。
たぶんできるだろう、というレベルで記述しています。
onos様、いつもありがとうございます。
なるほど。。モデルバインダちうんですね。奥が深いです。
もっと勉強したいと思います。
あドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
PHPで受け取ったパラメータを別...
-
検索時の選択内容を保持する方法
-
ラジオボタンをsessionで使いたい
-
PHP insert文内での、変数の記...
-
PHPで、ボタンを押すと同じペー...
-
filter_input 第 4 引数で使用...
-
チェックボックスを用い、MySQL...
-
extract($_POST)
-
テキストボックスに初期値を入れる
-
PHP ボタンが押されたら処理を...
-
PHPでCookieを使った訪問回数に...
-
PHPでユーザー情報を入力して簡...
-
phpで分からないエラーが出てし...
-
【PHPチェック】ラジオボタンが...
-
XMLデータをPOSTで送信・受信す...
-
HTMLのリンクをクリックするこ...
-
PHPのページ間による配列の受け...
-
cookieでチェックボックスの状...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
PHP ボタンが押されたら処理を...
-
検索時の選択内容を保持する方法
-
フォームへの前回入力値をクリ...
-
syntax error, unexpected '}' ...
-
フォームでのリセットを使う方法
-
画面が更新されてもチェックボ...
-
PHPでCookieを使った訪問回数に...
-
パラメーターを隠す
-
phpで分からないエラーが出てし...
-
POSTデータのNAME属性をVALUEに...
-
HTMLのリンクをクリックするこ...
-
PHPで画像の渡しが上手く行きま...
-
フォームボタンを押すたびに数...
-
PHPの関数実行
-
チェックボックスによる検索(...
-
DBの値をチェックボックスに反...
-
PHPで、ボタンを押すと同じペー...
-
PHPでユーザー情報を入力して簡...
おすすめ情報