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

时间:2016-02-18 14:54:17

标签: javascript jquery ajax asp.net-mvc asp.net-ajax

我正在尝试获取一个部分工作的简单列表的分页,但post actionresult永远不会被调用。

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

同样通过Chrome控制台,我可以看到点击下一个/上一个时页码正确计算。

我的控制器中的[HttpPost]操作方法有一个断点,它永远不会被调用。

问题不在于后端的C#,而是为什么表单不会首先发布。

我在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>

1 个答案:

答案 0 :(得分:1)

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

$('#CurrentPage').val(current);下面添加return true; - 你的if (CalculateAndSetPage("Previous/next"))的javascript函数询问是/否(布尔)问题,当前脚本没有回答。它只有在真实时才有效。