Назначить несколько функций для 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:
- OnBegin - xhr
- OnComplete - xhr, статус
- OnSuccess - данные, статус, xhr
- OnFailure - xhr, статус, ошибка