javascript - 按下删除键时 ASP.NET MVC 未知操作

标签 javascript c# asp.net-mvc

我遇到问题,当我尝试删除某些内容时,它会显示以下错误消息:

"Error: Unknown Action"

这是我的 Controller :

[Authorize(Roles = "Admin, Staff")]
        [HttpPost]
        [ValidateAntiForgeryToken]

public ActionResult Delete(int? id)
        {
            string result = null;
            try
            {
                if (id == null)
                {
                    result = HIQResources.errorMessageUnknownAction;
                    return new JsonResult { Data = result };
                }

                StudentViewModel vm = new StudentViewModel();
                StudentDetail studentDetail = studentManager.GetStudentDetailById(id.Value);
                if (studentDetail == null)
                {
                    result = HIQResources.errorMessageUnknownRecord;
                    return new JsonResult { Data = result };
                }


              int deleteResult = studentManager.Delete(id.Value);

                if (deleteResult == 1)
                {
                    vm.Alert.SetSuccessMessage(HIQResources.messageOperationSuccess);
                    TempData["alert"] = vm.Alert;

                    result = HIQResources.messageOperationSuccess;
                    return new JsonResult { Data = result };
                }
                else
                {
                    vm.Alert.SetErrorMessage(HIQResources.errorMessageUnableToExecuteOperation);
                    TempData["alert"] = vm.Alert;


                    result = HIQResources.errorMessageUnableToExecuteOperation;
                    return new JsonResult { Data = result };
                }

            }
            catch (DbUpdateException ex)
            {
                Log.AddLogRecord(LogManager.LogType.Warning, LogManager.LogPriority.Low, LogManager.LogCategory.Teacher, ex.Message, ex.StackTrace, base.GetLoggedUser());

                result = HIQResources.errorMessageUnableToDeleteRecord;
                return new JsonResult { Data = result };
            }
            catch (Exception ex)
            {
                Log.AddLogRecord(LogManager.LogType.Error, LogManager.LogPriority.High, LogManager.LogCategory.Inscription, ex.Message, ex.StackTrace, base.GetLoggedUser());

                result = HIQResources.errorMessageExceptionOccurred;
                return new JsonResult { Data = result };
            }
        }

这是我的 JavaScript:

 $('#ModalDeleteButton').on("click", function (e) {
                var token = $('input[name="__RequestVerificationToken"]').val();
                $.post("/Student/Delete/",
                    {
                        __RequestVerificationToken: token,
                        id: id
                    },
                    function (data) {
                        $('#myModal .close').click();
                        var baseurl = '@Url.Action("Index")';

                        var url = baseurl + "?message=" + data;
                        window.location.href = url;
                    });
            });

我需要有关此错误的更多具体详细信息,在我看来, Controller 和 javascript 是正确的,所以我真的不知道可能是什么。

最佳答案

如果您要调用 $.post,那么您需要将 [HttpPost] 属性放在方法定义上方。否则,它只是假设方法实际上是 GET (这就是操作“未知”的原因)

编辑:

尝试将您的 $.post 更改为:

$.ajax({
    type: "POST",
    data: {
        __RequestVerificationToken: token,
        id: id
    },
    success: function(data) {
        $('#myModal .close').click();
        var baseurl = '@Url.Action("Index")';

        var url = baseurl + "?message=" + data;
        window.location.href = url;
    }
});

关于javascript - 按下删除键时 ASP.NET MVC 未知操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960028/

相关文章:

javascript - PHP 无法将所选表中的数组填充到 json_encode 并在 javascript 上接收它

javascript - 在 angularjs 中使用 $document.querySelectorAll

c# - 如何获取 .NET WebAPI 调用的运行时间

c# - 双重数据认可?

javascript - Protractor :自定义 ExpectedConditions - 属性更改时

javascript - 编辑 p 标签内的字符串,但不编辑其中其他标签内的内容

c# - 如何 TypeCast SelectMany 结果

c# - LinqToSql 中的 Xml 查询

asp.net-mvc - 如何停止 Azure IIS 附加错误状态代码查询字符串

asp.net-mvc - ASP.NET MVC Razor 条件渲染元素