System.Net.WebClientとASP.net MVC 3のWebサイトでいくつか基本的なテストを行いました。アクションのパラメータにバインドすると、MVCはUrlEncodedされたクエリ文字列パラメータを自動的にデコードしますGETを使用する場合。しかし、POSTパラメータを自動的にデコードすることはありません。これには理由がありますか?不必要な不便のようです。ASP.net MVCがPOST(別名フォーム)パラメータを自動的にデコードしないのはなぜですか?
答えて
ASP.NET MVCのデフォルトモデルバインダーは、Request.Form
プロバイダーを使用してPOST値を読み取ります。このプロバイダは、URLエンコードされたパラメータも自動的にデコードします。
次のPOSTペイロード送信する場合、たとえば:だから、あなたはおそらく要求をコード正しくURLではありません
[HttpPost]
public ActionResult Test(string foo, string bar)
{
// foo equals &
// bar equals =
}
:対応するコントローラのアクションに
foo=%26&bar=%3D
を、あなたは正しい値を取得します。
ありがとうダーリン。あなたが正しい。 WebClient.UploadValuesがあなたのためにパラメータをエンコードしていることを認識していなかったので、私はテスト用のパラメータ "didn ' t"を二重にエンコードしていました。 UploadValuesを呼び出す前にURLエンコードを行わなかった場合(つまり、パラメータが1回のみエンコードされた場合)、テスト値のために「潜在的に危険なリクエスト」エラーが発生します。 私は、URLエンコーディングがこのようなエラーを処理すると思っていたので、実際にテスト/理解にレンチを投げました。再度、感謝します。 – Sean
+1これが見つかりました。それが自動的にデコードされているかどうかを知る必要がありました。ありがとう! – ryanulit
webapiは、投稿が発生したときに自動解読も行いますか? –
jQuery.Postを使用していて、以下のスニペットのようにdataパラメータを使用してPOSTデータとしてデータを送信する場合、jqueryは自動的にエンコードします。
var postdata = {
url: someUrl, //do not encodeURIComponent, it's done by jquery.post. test with some edge url if in doubt
};
$.post(serverUrl, postdata)
.done(function (data) {
};
あなた自身もエンコードすると、2重にエンコードされたデータが得られます。 Asp.netコントローラのパラメータは、getまたはpostの場合には常に1回デコードされます。
- 1. ASP.NET MVCコントローラのパラメータが自動的に
- 2. javascriptプロトコルがURLを自動的にデコードするのはなぜですか?
- 3. ASP.NET MVC - POSTパラメータ
- 4. Asp.net mvcのネストされたフォームにスコープがないのはなぜですか?
- 5. 動的フォームASP.NET MVC
- 6. Asp.net MVCは、異なるパラメータを持つ2つのアクションを区別できないのはなぜですか?
- 7. なぜasp.net MVCでActionResultメソッドのパラメータがnullですか?
- 8. Rubyがto_sを自動的に実行しないのはなぜですか?
- 9. なぜspring mvcが自動的にGsonHttpMessageConverterを追加するのですか?
- 10. Android用のvolleyがGET/POSTリクエストで自分のパラメータを送信しないのはなぜですか?
- 11. 自動テストが動作しないのはなぜですか?
- 12. Firefoxで自動的にエンコードされたパラメータをURL内でデコードします。
- 13. MVC Sweet Alertがなぜ自動的に閉じるのですか?
- 14. Eclipseでメソッドコメントを自動的に生成しないのはなぜですか?
- 15. なぜ$ .postメソッドがIEで動作しないのですか?
- 16. ASP.NETで動的HTML選択のフォーム変数が定義されていないのはなぜですか?
- 17. ボタンが自動的に起動し、手動で起動しないのはなぜですか?
- 18. ASP.NET MVC - 異なるエンティティで同じ名前の複数のパラメータをバインドするモデル - GETとPOSTが異なる?
- 19. Server.HtmlDecodeがデータをデコードしないのはなぜですか?
- 20. save_m2m()を自動的にsave()しないのはなぜですか?
- 21. asp.net mvcのサーバーコントロールはなぜですか?
- 22. Java ArrayListsが自動的に縮小されないのはなぜですか
- 23. ToolTipManager.sharedInstance.registerComponent(tree)が自動的に行われないのはなぜですか?
- 24. ASP.NET MVC公開後にルーティングが機能しないのはなぜですか?
- 25. Asp.net MVCルーティング:静的前のデフォルト値 - なぜ機能しないのですか?
- 26. mvc postメソッドが動作しない
- 27. Dockerコンテナの1つがマシンの起動時に自動的に起動しないのはなぜですか?
- 28. 地図ASP.NET MVCアクション・パラメータ名は別の名前
- 29. Angular JS $ http POSTがASP.NET MVCで正常に応答しない
- 30. なぜこのASP.NETプロファイルセクションが動的にコンパイルできないのですか?
チェックアウトのモデルバインディングです。 –