我想在asp.net应用程序中注册新用户。而不是使用表单我想使用Ajax。
这是我在AccountController中的帖子功能:
[System.Web.Mvc.HttpPost]
public async Task<bool> Register(UserItem post) {
try {
var user = new ApplicationUser { UserName = post.UserName, Email = post.UserName };
var result = await UserManager.CreateAsync(user, post.Password);
if (result.Succeeded) {
post.Id = user.Id;
await _userRepository.Save(post);
return true;
}
AddErrors(result);
}
catch (Exception e) {
Console.WriteLine(e);
}
// If we got this far, something failed, redisplay form
return false;
}
这是我对控制器的Ajax调用:
var userJson = ko.toJSON(self.selectedUser);
console.log(userJson);
$.ajax({
type: "POST",
url: "http://localhost:7061/Account/Register",
headers: "application/json; charset=UTF-8",
dataType: "json",
contentType: "application/json",
data: userJson,
error: function (xmlHttpRequest, textStatus, errorThrown, response) {
},
success: function (response) {
console.log(response);
self.loadUsers();
}
});
但我的控制器中的寄存器功能永远不会被调用。
感谢。
答案 0 :(得分:1)
在AccountController
上,每个操作都需要返回ActionResult
个对象,如果是异步操作,则需要Task<ActionResult>
。否则,它不会被视为一个动作,也不会将请求路由到它。
将方法的签名更改为:
public async Task<ActionResult> Register(UserItem post) {
而不是返回true
或false
,而是返回Json(true)
或Json(false)