繁体   English   中英

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

[英]Register new users in an asp.net application without a form

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

但是我的控制器中的注册功能从未被调用过。

谢谢。

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

将方法的签名更改为:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM