Ajax.BeginForm onSuccess刷新部分视图导致事件解除绑定 - 无论如何要避免这种情况?

时间:2013-05-17 19:01:44

标签: jquery asp.net-mvc-4 asp.net-ajax html-helper

在MVC4的部分视图中使用Ajax.BeginForm()帮助器提交表单时,onSuccess部分视图会重新加载并导致我的所有事件在此部分视图中解除绑定。在以下代码中,在页面加载时,绑定到.eventButton的事件将正常工作。一旦您尝试提交表单并收到错误,部分视图就会刷新,并且绑定到.eventButton的事件将不再有效。

在我的例子中,它只是一个元素,但在我正在使用它的场景中有更多的参与。这是我的代码,删除了一些多余的信息。

<div id="login">

        @{
            AjaxOptions registerOptions = new AjaxOptions
                {
                    HttpMethod = "Post",
                    UpdateTargetId = "login",
                    OnBegin = "showLoading",
                    OnSuccess = "stopLoading"
                };
        }

        @using (Ajax.BeginForm("Login", "Account", registerOptions))
        {
            @Html.TextBoxFor(m => m.Email, new { placeholder = "Your Email" })
            @Html.PasswordFor(m => m.Password, new { placeholder = "Your Password" })
            <input type="submit" value="Sign In" />
        }

        <a class="eventButton">Clicking this will trigger an event!</a>

</div>

我有没有办法通过Ajax.BeginForm()使用MVC4 HTML帮助程序提交此表单,而不会导致部分视图刷新,也不需要我再次委派我的事件?

1 个答案:

答案 0 :(得分:2)

您需要将事件与文档联系起来。变化

$('.eventButton').on('click', function()...

$(document).on('click', '.eventButton', function(){...