ASP.NET MVCのajax Formで複数のsubmitボタンを使う方法
お仕事でフォームを作っているときに、どうしてもajaxを使って複数の呼び出しをするフォームを作る必要が出てきてしまったので、やり方をメモしておきます。
ビュー側
@model Models.MyModel
@using (Ajax.BeginForm("Action", "MyController", new AjaxOptions { HttpMethod = "Post"}))
{
@Html.AntiForgeryToken()
<input type="submit" name="Action1" value="1" />
<input type="submit" name="Action2" value="2" />
<input type="submit" name="Action3" value="3" />
}
コントローラー側
[ValidateAntiForgeryToken]
[HttpParamAction]
[HttpPost]
public ActionResult Action1(Models.MyModel model)
{
if (Request.IsAjaxRequest())
{
// ここで処理を行う。
}
else
{
return new EmptyResult();
}
}
Action2以降も同じ
解説
- ビューのsubumitの部分のname属性とコントローラ側のメソッド名を合わせます。
- 呼び出されるメソッド側には[HttpParamAction]、[HttpPost]属性をつけます。
- メソッド内で Request.IsAjaxRequest()を確認し、ajax稼動か調べましょう。
そう複雑なことも無いので、上手く使えるときは使っていきましょう。
おまけ
jquery.unobtrusive-ajax.min.jsを参照するの忘れないようにしましょうね。
最初動かなくて一瞬あせったのは内緒です。
AjaxOptions のUpdateTargetIdやOnSuccess, OnFailure, OnCompleteを上手く使いましょう。
プログラミングMicrosoft ASP.NET MVC ASP.NET MVC 3対応版 (マイクロソフト公式解説書)
- 作者: Dino Esposito,日本マイクロソフト井上章監訳,株式会社クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2012/05/08
- メディア: 単行本
- クリック: 34回
- この商品を含むブログ (6件) を見る
Programming ASP.NET MVC 4: Developing Real-World Web Applications with ASP.NET MVC
- 作者: Jess Chadwick,Todd Snyder,Hrusikesh Panda
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/09/14
- メディア: Kindle版
- この商品を含むブログを見る