我有一个注册页面,我正在尝试将输入字段保存到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&gt; RegController&gt;人&gt; addUser(Person):void。
我已经尝试了我能想到的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 }
);
}
答案 0 :(得分:1)
有几个问题:
控制器中的操作是静态的。
您的控制器中的操作是私有的,而不是公开的。
您使用的路线指向错误的端点(使用路线调试器或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) {
}
})
};
假设这是一个vanilla web api v2应用程序,如果您运行Web应用程序并单击API链接,它将显示您的路由配置方式。
附注:我发现在调试web api时使用以下软件包非常有用:
Install-Package WebApiRouteDebugger