Ajax.BeginForm() 没有回发到控制器

Ajax.BeginForm() not posting back to the controller

我正在尝试为部分工作中保存的简单列表进行分页,但 post actionresult 从未被调用。

在调试期间,我可以看到我的按钮在 Chrome 调试器中被激活,所以我认为问题出在 $('form') 但我不确定为什么。

另外,通过 Chrome 控制台,我可以看到单击 next/previous 时页码计算正确。

我在控制器的 [HttpPost] 操作方法上有一个断点,但它从未被调用。

问题不在于后端的 C#,而是为什么表单没有首先 posted。

Ajax 和 POST 返回哪里出错了?

索引:

@model ViewModel
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Things</h2>
<div>

    @Html.ActionLink("Create", "Create", "Things", null, new { @class = "modal-link btn btn-sm" })
    <div class="Table">
        <div id="thingsList">
            @Html.Partial("List", Model.ThingList)
        </div>
        @using (Ajax.BeginForm("Index", "Things", FormMethod.Post, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "thingsList" }))
        {
            <input type="hidden" id="CurrentPage" value="@ViewBag.CurrentPage" />
            <input type="hidden" id="PreviousPage" value="@ViewBag.PreviousPage" />
        }
        <input type="button" onclick="javascript: PrevBtnClick();" class="btn btn-primary" id="PrevBtn" value="Previous" />
        <input type="button" onclick="javascript: NextBtnClick();" class="btn btn-primary" id="NextBtn" value="Next" />
    </div>
</div>
<script type="text/javascript">
    function PrevBtnClick() {
        if (CalculateAndSetPage("Previous")) {
            $('form').submit();
        }
    }
    function NextBtnClick() {
        if (CalculateAndSetPage("Next")) {
            $('form').submit();
        }
    }
    function CalculateAndSetPage(movingType) {
        var current = parseInt($('#CurrentPage').val());
        if (movingType == 'Previous') {
            current--;
        }
        else if (movingType == 'Next') {
            current++;
        }
        else {
            alert('Something has gone wrong');
        }
        $('#CurrentPage').val(current);
    }
</script>

它没有回发的原因是它永远不会到达 $('form') - 这应该可以正常工作。

$('#CurrentPage').val(current); 下方添加 return true; - if (CalculateAndSetPage("Previous/next")) 的 javascript 函数正在询问 yes/no(布尔值)问题,而您当前的脚本不是回答。它只有在为真时才有效。