Angular $http.post 到 ASP MVC 6 Web Api
Angular $http.post to a ASP MVC 6 Web Api
我正在尝试使用 angularjs 客户端和 ASP MVC 6 beta 4 Web Api.
创建一个非常基本的登录示例
angular控制器端的登录调用:
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 打电话。
你知道为什么序列化过程不起作用吗?我读到 angular js post 方法使用 JSON 作为数据类型。
我假设 Web Api 支持 Json 内容协商(根据 this post),但也许我错了,有一些配置可以添加 Startup.cs 文件。
我应该将 json 数据格式化为:
$http.post('/api/account/login', {
Email: vm.username,
Password: vm.password,
RememberMe: vm.rememberMe
})
我应该在 API 原型中添加 [FromBody] 指令:
public async Task<IActionResult> Login([FromBody]LoginViewModel model)
我正在尝试使用 angularjs 客户端和 ASP MVC 6 beta 4 Web Api.
创建一个非常基本的登录示例angular控制器端的登录调用:
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 打电话。
你知道为什么序列化过程不起作用吗?我读到 angular js post 方法使用 JSON 作为数据类型。
我假设 Web Api 支持 Json 内容协商(根据 this post),但也许我错了,有一些配置可以添加 Startup.cs 文件。
我应该将 json 数据格式化为:
$http.post('/api/account/login', { Email: vm.username, Password: vm.password, RememberMe: vm.rememberMe })
我应该在 API 原型中添加 [FromBody] 指令:
public async Task<IActionResult> Login([FromBody]LoginViewModel model)