为OnBeign分配多个功能

时间:2014-05-21 14:15:40

标签: javascript asp.net-mvc razor ajax.beginform

有没有办法在OnBegin中为Ajax.BeginForm()分配多个javascript函数,同时将一些参数(即xhrstatus)传递给其中一个,例如

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

当您为OnBegin提供一个功能名称时,您有三个参数xhrstatuserror。我该如何处理内联?

1 个答案:

答案 0 :(得分: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事件属性可用的参数列表: