1

複数の JavaScript 関数をOnBegininに割り当てAjax.BeginForm()、いくつかのパラメーター (つまりxhrおよびstatus) をそれらの 1 つに渡す方法はありますか

@using (@Ajax.BeginForm("Action", "Controller", new AjaxOptions
{
    UpdateTargetId = "convertContractorToAnEmployeeFormAjaxContainer",
    OnBegin = "(function(xhr, status){ oneFunction(xhr, status); anotherOne();})();"
}))
{
    //...
}

に 1 つの関数名を指定すると、3 つの引数, ,OnBeginが得られます。インラインで処理するにはどうすればよいですか?xhrstatuserror

4

1 に答える 1

3

匿名関数で呼び出しをラップすることで実行できます。

例えば:

ビュー/ホーム/Index.cshtml:

<div id='ajaxStatus'></div>
@using (@Ajax.BeginForm("Test", "Home", new AjaxOptions
    {
        OnBegin = "new function(){func1(xhr); func2();}",
        UpdateTargetId = "ajaxStatus",
    })
)
{
    <input type='submit' />
}

@section Scripts{
    @Scripts.Render("~/Scripts/jquery.js")
    @Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js")

    <script type="text/javascript">
        function func1(xhr) {
            console.log("xhr: ", xhr);
        }

        function func2(){
            console.log("func2 called");
        }

    </script>
}

HomeController.cs:

public ActionResult Index()
{
    return View();
}

public MvcHtmlString Test(object form)
{
    return new MvcHtmlString("success");
}

また、ちょっとした注意:OnBeginの使用可能な引数はxhrです。

以下は、各AjaxOptionイベント プロパティで使用できる引数のリストです。

于 2014-05-21T15:14:29.060 に答える