Назначить несколько функций для OnBeign

Есть ли способ назначить более чем одну функцию JavaScript OnBegin в Ajax.BeginForm()при передаче некоторых параметров (т.е. xhr а также status) к одному из них, например

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

Когда вы предоставляете одно имя функции для OnBegin у тебя есть три аргумента xhr, status, error, Как мне справиться с этим в строке?

1 ответ

Решение

Вы можете сделать это, завернув свои звонки в анонимную функцию.

Например:

Views / Home / 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:

Другие вопросы по тегам