ASP.net MVCを使用すると、フォームではなくURLからのパラメーターを含むコントローラーアクションにフォームをPOSTすることができますか?
例えば
GroupControllerのActionメソッド:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(int idOne, int idTwo, Model model)
{ ... }
ルート:
"{controller}/{action}/{idOne}/{idTwo}"
投稿されたURL:
/Employee/Show/1/42
この例では、フォームは別のコントローラーに送信されており、モデルの値は正しいですが、他のパラメーターのデフォルト値は0です。
私が期待していた動作は、ModelBinderが、指定されたルートに一致する2つのパラメーターがあることを認識し、GET操作が機能するのと同じ方法でパラメーターに1と42の現在の値を割り当てることです。
この動作はサポートされていませんか、それとも何かが足りませんか?
編集:明確にするShow
ために、コントローラーのビューEmployee
のフォームには、別のコントローラーに投稿しているフォームが含まれています。私たちはそれを呼ぶことができますGroup
。
フォームアクションのURLは次のようになります
/Groups/Create/0/0
フォームは次のように宣言されます
Html.BeginForm("Create", "Groups")
のために多くの異なるオーバーロードを試した後Html.BeginForm
、フォームアクションURLがブラウザのアドレスバーの現在のURLと一致する場合にのみパラメータがマップされることがわかりました。
したがって、URL/Groups/Create/1/42
に移動すると、新しいフォームが表示されます。次にフォームを送信すると、URLルート値がPOSTアクションに渡されます。