“return false”不会停止回发到控制器

时间:2016-09-14 17:11:39

标签: javascript asp.net-mvc

我有一个MVC5视图,在这个视图中我有:

@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post))
{
    // My controls
    <input type="submit" id="btnSubmit" class="btn btn-primary" value="Submit" />
}

我想要的是在发布到控制器之前进行ajax调用检查记录计数。

如果记录数量很高,我想留在视图上并提示用户。

除了视图仍然发布到MyAction之外,所有内容似乎都有效。我原以为“返回假”;为了防止这种情况。

为什么“返回false”没有停止向控制器发送帖子?

$("#btnSubmit").click(function (e) {

        var p1= $("#Value1").val();
        var p2= $("#Value2").val();

        $.ajax({
            type: "GET",
            url: "/MyController/GetRecordCount",
            data: { "param1": p1, "param2": p2 },
            async: false
        }).done(function (recCount) {
            if (recCount> 999)
            {
                $(".showAdditionalInfo").show();
                return false;
            }
        }).fail(function (xhr, status, err) {
            alert(xhr.responseText);
        });
    });

1 个答案:

答案 0 :(得分:1)

您的返回应该在点击处理程序本身内。现在它在AJAX回调中。

应该是这样:

$("#btnSubmit").click(function (e) {
        e.preventDefault();
        var p1= $("#Value1").val();
        var p2= $("#Value2").val();
        var doPost = true;


        $.ajax({
            type: "GET",
            url: "/MyController/GetRecordCount",
            data: { "param1": p1, "param2": p2 },
            async: false
        }).done(function (recCount) {
            if (recCount> 999)
            {
                $(".showAdditionalInfo").show();
                doPost = false;
            }
        }).fail(function (xhr, status, err) {
            alert(xhr.responseText);
        });

        return doPost;
    });

这假设ajax请求不会是异步的。一旦它出现,那就不再适用了。