javascript - Ajax.BeginForm() 不回发到 Controller

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

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

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

另外,通过 Chrome 控制台,我可以看到在单击下一个/上一个时页码计算正确。

我在 Controller 中的 [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>

最佳答案

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

$('#CurrentPage').val(current); 下添加 return true; - if (CalculateAndSetPage("Previous/next")) 正在问一个是/否( bool )问题,您当前的脚本没有回答这个问题。它只有在为真时才有效。

关于javascript - Ajax.BeginForm() 不回发到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35484773/

相关文章:

javascript - 如何在没有提示的情况下直接从 Internet Explorer 打印到标签打印机

javascript - 基本 RequireJS 帮助 - 如何调用/定义函数?同时使用 onclick 和 jquery

javascript - 从屏幕左侧滑动到内容右侧

javascript - 使用 JS 解析 Json 中的嵌套对象

javascript - jquery 自动完成 : how to handle special characters (& and ')?

javascript - 如何在JS中的屏幕右上角插入一个 float 按钮

javascript - 响应对象的 JSON 对象到 api 端点

javascript - Ajax 完成回调不等待不是函数

javascript - 如何从异步调用返回响应?

javascript - 无法让 jquery AJAX 工作 Node js Express