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を上手く使いましょう。

 

 

Programming ASP.NET MVC 4: Developing Real-World Web Applications with ASP.NET MVC

Programming ASP.NET MVC 4: Developing Real-World Web Applications with ASP.NET MVC