在没有表单的asp.net应用程序中注册新用户

时间:2017-01-09 08:06:32

标签: javascript c# ajax asp.net-mvc asp.net-membership

我想在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();
  }
});

但我的控制器中的寄存器功能永远不会被调用。

感谢。

1 个答案:

答案 0 :(得分:1)

AccountController上,每个操作都需要返回ActionResult个对象,如果是异步操作,则需要Task<ActionResult>。否则,它不会被视为一个动作,也不会将请求路由到它。

将方法的签名更改为:

public async Task<ActionResult> Register(UserItem post) {

而不是返回truefalse,而是返回Json(true)Json(false)