2015-05-12 11 views
1

Я пытаюсь создать очень простой пример входа с помощью клиента 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 добавлена ​​некоторая конфигурация.

+0

я полностью пропустил это: HTTP: //stackoverflow.com/questions/28782928/asp-net-5-mvc-6-ajax-post-model-to-controller. –

ответ

2
  • я должен форматировать данные JSon как:

    $http.post('/api/account/login', { 
        Email: vm.username, 
        Password: vm.password, 
        RememberMe: vm.rememberMe 
    }) 
    
  • Я должен добавить [FromBody] директиву в API прототипу:

    public async Task<IActionResult> Login([FromBody]LoginViewModel model) 
    
Смежные вопросы