1

有没有一种方法可以将多个 javascript 函数分配给OnBeginin Ajax.BeginForm(),同时将一些参数(即xhrstatus)传递给其中一个,例如

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

当您为您提供一个函数名称时,OnBegin您将获得三个参数xhr, status, error. 我如何内联处理它?

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 回答