我有一个注册页面,我试图将输入字段保存到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中的字符串评估函数 - javascriptJavaScript中是否有任何内置函数,例如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…