9

フォームを POST し、そのアクションにクエリ パラメータがあり、フォーム データがある場合、ASP.NET/MVC で定義されているフォーム バインディングの動作は何ですか?

例えば:

<form action="my/action?foo=1" method="post">
     <input type="hidden" name="bar" value="2">
</form>

そのようなフォームが送信された場合、コントローラーはそれらの両方fooを取得する必要がbarありますか?

4

3 に答える 3

8

コントローラーは両方の値を取得します。既定のモデル バインダーは、URI (クエリ文字列またはルート パラメーターのいずれか) または本体 (フォーム データはすぐにサポートされます) の両方からパラメーターの一致を見つけようとします。

于 2012-05-04T19:25:02.037 に答える
2

これは Html.BeginForm ヘルパーでサポートされていることがわかります。routeValues を介して行います。

@Html.BeginForm("ActionName", "ControllerName", new { foo = "1" })

基本的にフォームタグと同じ html を生成しますが、この質問を見つけて、BeginForm ヘルパーを使用してフォームの一部ではない追加の値を渡す方法を知りたい人のために投稿したいと考えました。

于 2012-11-09T22:00:45.200 に答える
0

両方取得できればいいと思います。この場合、'foo' という名前と 'bar' という名前の 2 つの文字列または int プロパティを含む ViewModel を作成し、ActionResult に ViewModel を受け入れさせます。両方の値が入ってくるはずです。

于 2012-05-04T19:25:34.860 に答える