Javascript Ajax调用无法访问我的Web API控制器页面。似乎无法正确获得网址 - c#

我有一个注册页面,我试图将输入字段保存到Users表中的新记录中。

 <button class="btn-u" type="submit" 
 onclick="submitclicked()">Register</button>

点击被拾起,我可以在我的.js上找到断点

function submitclicked() {
    insertNewUser();

    ko.applyBindings({ insertNewUser: insertNewUser });
};

function Person() {
    this.FirstName = firstname();
    this.LastName = lastname();
    this.Email = email();
    this.Password = password();
}

var insertNewUser = function () {

    var person = new Person();
    var url = "/api/Home/addUser"
    $.ajax({
        url: url,
        type: 'post',
        data: person,
        contentType: "application/json; charset=utf-8",
        success: function (result) {
        }
    })
};

我的RegController.cs文件中也有一个断点,但是它从未被命中。这使我相信它永远不会进入我的控制器。我的控制器如下所示:

public class RegController : ApiController
{
   //now insert  these values into the DB
    private static void addUser(Person item)
    {
        var db = new MyEntities();

        try
        {
            User record = new User()
            {

                First_Name = item.FirstName,
                Last_Name = item.LastName,
                Email = item.Email,
                Password = item.Password
            };
            db.User.Add(record);
            db.SaveChanges();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.InnerException);
        }
    }

    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
    }

}

在解决方案资源管理器中,它进入RegController.cs> RegController> Person> addUser(Person):无效。

我已经尝试过我能想到的针对ajax url的所有其他选项,但均未成功。有人可以告诉我我做错了什么吗?

编辑:添加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 }
        );
    }

参考方案

有几个问题:

控制器中的动作是静态的。
控制器中的操作是私有的而不是公开的。
您使用的路由指向错误的端点(使用路由调试器或API帮助来查看正确的端点)。

需要考虑的一些更新:

public class RegController : ApiController
{
   //now insert  these values into the DB
    public void addUser(Person item)
    {
            ...

    }

    public class Person
   {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
    }

}

对于jquery请求:

var insertNewUser = function () {

    var person = new Person();
    var url = "/api/Reg"
    $.ajax({
        url: url,
       type: 'post',
        data: person,
        contentType: "application/json; charset=utf-8",
        success: function (result) {
        }
    })
};

假设这是一个普通的Web api v2应用程序,如果您运行Web应用程序并单击API链接,它将向您显示如何配置路由。

旁注:在调试Web api以利用以下程序包时,我发现它很有用:

Install-Package WebApiRouteDebugger

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

重复使用Google Api Bearer令牌来访问用户的云端硬盘 - javascript

我有以下几点: gapi.auth.authorize( { client_id: CLIENT_ID, scope: SCOPES, immediate: false }, handleAuthResult); 这使我可以访问access_token:目标是使该应用程序的用户可以授予对我的应用程序的访问权限,以使用其Google驱动器存储其内容。我需要能够…

JavaScript中的字符串评估函数 - javascript

            JavaScript中是否有任何内置函数,例如Python中的eval内置函数?注意:eval函数将方程式作为字符串并返回结果。例如,假设变量x为2,则eval("2x+5")返回9。 参考方案 是的,JavaScript中也有eval函数。此外,该声明应有效用于评估,即eval("2*x+5"…

如何在JQuery中操作JSONArray - javascript

我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…