无法访问 Web 应用程序中的控制器方法

问题描述 投票:0回答:0

我继承了一个旧的 Web 应用程序。

简单的背景: 目前,razor .cshtml 页面上有一些按钮可以在单独的文件中调用 JS 函数。 它通过 SweetAlert 对控制器方法进行 ajax 调用就好了。

.cshtml文件:

@*

.js文件:

function onDeleteButtonClick(e) {

  swal({
    title: "Are you sure?",
    text: "You will update this user!",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Yes, updated it!",
    closeOnConfirm: false
  }, function () {
    var id = $(e).attr('data-value')
    $.ajax({
      type: "POST",
      url: '/admin/UpdateUser?userid=' + id
    });
    swal("Updated!", "User has been updated.", "success");
    document.location.reload();
  });

}

c#文件:

public string UpdateUser(int id = 0)
        {
            // db stuff

            return "Success";

        }

我想做什么: 我正在尝试创建新的 JS 函数,这些函数使用与现有方法相同的样式调用新的 Controller 方法。

我所做的改变:

  1. 通过复制和粘贴以及仅更改方法名称和方法代码来创建新的控制器方法。
  2. 我使用复制和粘贴相同的 JS 代码并更新 URL 来调用 Controller 中的新方法。

结果: 在测试我创建的新方法时,每次都以 404 失败。

我还使用 Postman 进行了测试。 Postman 为 Controller 中的现有方法返回“200 OK”。我创建的所有方法都是 404。

我试过的东西:

  1. 我读到控制器有时会出现问题并创建一个全新的控制器并进行测试。我有,同样的结果。
  2. 我在 VS 中完成了“清理和构建”。没有区别
  3. 我正在使用 RouteConfig.cs 中定义的路由。没有区别
  4. 将返回类型从字符串切换为 ActionResult。没有区别
  5. 向方法添加属性:[System.Web.Mvc.AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]。没有区别
  6. 我研究过是否有可能阻止控制器方法(也许最后一个人想控制访问??)。但似乎没有什么不寻常的。当我发现“MVC-AreaRegistrationTypeCache.xml”时我确实很兴奋,认为有一个文件可能包含特定允许访问方法的列表,但这没有帮助。
  7. 使用 Postman 测试。每次都是404。 Postman Response
  8. 清除了我的浏览器缓存。没有区别
  9. 遵循 ChatGPT 解决方案。没有区别
  10. 遵循 GitHub CoPilot 提示解决方案。没有区别

我们将不胜感激!!

我读到控制器有时会出现问题并创建一个全新的控制器并进行测试。我有,同样的结果。

我在 VS 中完成了“清理和构建”。没有区别

我正在使用 RouteConfig.cs 中定义的路由。没有区别

我研究过是否有可能阻止控制器方法(也许最后一个人想控制访问??)。但似乎没有什么不寻常的。当我发现“MVC-AreaRegistrationTypeCache.xml”时我确实很兴奋,认为有一个文件可能包含特定允许访问方法的列表,但这没有帮助。

使用 Postman 测试。每次都是404。

javascript c# asp.net ajax controller
© www.soinside.com 2019 - 2024. All rights reserved.