Я пытаюсь создать очень простой пример входа с помощью клиента angularjs и ASP MVC 6 beta 4 Web Api.
Войти вызов на угловой стороне контроллера:
function login() {
vm.dataLoading = true;
$http.post('/api/account/login', {
model: {
Email: vm.username,
Password: vm.password,
RememberMe: vm.rememberMe
}
})
.success(function (data) {
vm.dataLoading = false;
if (data.success) {
logger.info(data.message);
if ($scope.returnToState) {
$state.go($scope.returnToState.name, $scope.returnToStateParams);
}
else {
$state.go('dashboard');
}
}
else {
vm.error = data.message;
}
})
.error(function (error) {
vm.dataLoading = false;
vm.error = data;
});
}
Точка входа API:
[Route("login")]
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
if (result.Succeeded)
{
return Json(new { success = true, message = "Login success !" });
}
else
{
return Json(new { success = false, message = "Invalid login attempt." });
}
}
модели:
public class LoginViewModel
{
public string Email { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
Когда я тянусь точку входа Войти , экземпляр LoginViewModel имеет свои члены, равные null (за исключением того, что параметр RememberMe установлен в false), даже если значения представления модели хорошо определены перед вызовом $ http.post.
Вы знаете, почему процесс сериализации не работает? Я читал, что метод углового js post использует JSON как тип данных.
Я предполагаю, что веб-Api поддерживает отрицательное содержание контента Json (согласно сообщению this), но, возможно, я ошибаюсь, и в файл Startup.cs добавлена некоторая конфигурация.
я полностью пропустил это: HTTP: //stackoverflow.com/questions/28782928/asp-net-5-mvc-6-ajax-post-model-to-controller. –