gpt4 book ai didi

javascript - 对 C# Controller 方法进行 Ajax 调用

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:47 25 4
gpt4 key购买 nike

这是我名为“data handling.js”的 javascript 文件中的代码,位于名为“JS”的文件夹中:

document.getElementById('submit-new-project').addEventListener("click", function () {
var ProjectName = document.getElementById('new-project').value;
if (ProjectName) {
$.ajax({
type: "POST",
url: "Controllers/HomeController/AddProject",
data: {"ProjectName": ProjectName},
success: function () {
hideElement("add-button-popup");
location.reload();
},
error: function (errorThrown) {
console.log(errorThrown)
}
});
}
else {
alert("Text Field Must Not Be Empty");
}
})

这是我的 Controller 方法:

public partial class HomeController : Controller
{
[HttpPost]
public static void AddProject(string ProjectName)
{
using (AutomationMethodDirectoryEntities db = new AutomationMethodDirectoryEntities())
{
try
{
PROJECT project = new PROJECT();
project.ProjectName = ProjectName;
db.PROJECTS.Add(project);
db.SaveChanges();;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}

Controller 方法位于“Adders.cs”中,它是“Controllers”文件夹中“HomeController.cs”的分部类。 “JS”和“Controllers”文件夹都位于项目的根级别。我已经尝试过此 ajax 调用的多种变体,但我最大的问题是 URL。无论我尝试什么,我总是收到 404 错误,因为服务器找不到请求的 URL。

我尝试将其更改为:

url: "Controllers/HomeController/AddProject"
url: "/Controllers/HomeController/AddProject"
url: "../Controllers/HomeController/AddProject"
url: "Home/AddProject"
url: "/Home/AddProject"
url: "../Home/AddProject"
url: "@(Url.Action(AddProject, HomeController))"

而且我已经将“HomeController”与“Adders”进行了不同变体的交换。

我做错了什么?

有什么我需要添加/更改到我的 Controller 方法吗?

编辑

这是我尚未进行任何更改的“RouteConfig.cs”:

namespace RTCAD
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}

最佳答案

当调用您的 AddProject 操作时,ASP.NET MVC 创建 Controller 的一个实例(使用 ControllerFactory),并且由于您的方法是静态的,因此它与任何实例,因此,它不会被 MVC 调用。

从方法声明中删除静态并使用 /Home/AddProject 作为 URL。

关于javascript - 对 C# Controller 方法进行 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50612354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com