2017-01-09 22 views
0

Я бы хотел зарегистрировать новых пользователей в приложении asp.net. Вместо использования формы я хотел бы использовать Ajax.Регистрация новых пользователей в asp.net-приложении без формы

Это мой пост функция в моем 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

Вы должны связать эту функцию Ajax внутри document.ready функции. –

+0

F12 в вашем браузере и проверьте «сеть», чтобы узнать, какой результат вы возвращаете. поможет вам найти ошибку. Вы пробовали данные: {post: userJson}, – KevDevMan

+0

зачем использовать bool в 'Task <>' ?? –

ответ

1

В поле AccountController для каждого действия необходимо вернуть объект ActionResult или в случае асинхронного действия Task<ActionResult>. В противном случае это не будет рассматриваться как действие, и никакой запрос не будет перенаправлен на него.

Изменить подпись метода:

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

и вместо возвращения true или false, возвращение Json(true) или Json(false)