2011-01-07 7 views
0

MVCフォームに問題がありました。2番目のフォームの送信ボタンが2番目のフォームをトリガーすると、2番目のフォームの送信ボタンが元のフォームの動作にPOSTリクエストを送信します。

第2フォームの送信ボタンは、元のフォームの操作に進みます。 フォームがネストできるかどうか尋ねました:Why do nested forms in Asp.net mvc not have scope?。フォームタグは実際に入れ子にすることができないので、フォームを別のdivに入れて問題を解決するように変更しました。

ユーザーが最初のフォームで[送信]をクリックすると、2番目のフォームが表示されます。ユーザーがフォームの送信ボタンをクリックすると、新しいフォームのビューとビューモデルの後に名前が付けられたフォームではなく、元のフォームのコントローラアクションにPOSTされます。

挿入される形態は、第二の形態は、その端部に<input type="submit">タグを有する Ajax.BeginForm(new AjaxOptions {UpdateTargetId="X"}))

を使用しています。ユーザーがこのボタンをクリックすると、フォームのモデルの値はコントローラに返されません。

私は明示的にAjaxのリンクでのコントローラのアクションを指定して試してみた:

<%: Ajax.ActionLink("Add OS","OS",new AjaxOption{UpdateTargetId="", HttpMethod="POST"})%>

これは戻って正しいアクションにフォームを送信します。ただし、返される値はすべてnullです。

FormCollectionはHtml.BeginFormで簡単に作業し、FormCollection辞書を解析していますが、完全に理解できない理由でセットアップが機能しなくなりました。

ここで問題は何ですか?私は、私が再びウェブフォームの土地にいるように感じています...

+0

これはおそらくhttp://stackoverflow.com/questions/649513/how-do-i-perform-a-secondary-action-i-e-calculate-fields-in-asp-net-mvcと同様の問題ですか? – rsteckly

答えて

0

私は、同じ行動に2つの異なるフォームを提出しようとしていると思います。通常、2つのフォームがある場合、フィールドを含む2つの異なるビューモデルが関連付けられています。だから私は2つの異なるコントローラのアクションをお勧めします。

+0

こんにちはDarin - いいえ、実際には、新しいフォームには異なるコントローラアクションがあります。私は別のビューモデルも持っています。問題は、送信ボタンが2番目のアクションではなく最初のコントローラアクションにポストすることです。手動でAjax.ActionLinkを使用してポストする場所を指定しようとすると、正しいアクションに戻りますが、空の値が返されます。 – rsteckly

関連する問題