2016-05-15 21 views
1

Warum ist Null Null in model Variable? Wo ist der Fehler?AngularJS-Objekt an Controller übergeben

enter image description here

Controller:

[HttpGet] 
    [AllowAnonymous] 
    public JsonResult LoginAngular(LoginViewModel model, string returnUrl) 
    { 
     Console.WriteLine(model.UserName); 
     return Json(model.UserName,JsonRequestBehavior.AllowGet); 
    } 

Angular:

var login = angular.module('LoginApp', []); 
login.controller('LoginCtrl', function ($scope, $http) { 
    $scope.name = 'Login'; 
    $scope.model = { UserName: 'nothing', Password: 'nothing' }; 
    $scope.model.UserName = "Test"; 
    $scope.model.Password = 'Test'; 
    $scope.returnUrl = '/Account/TestLogin'; 

    $scope.onClick = function() { 
     console.log($scope.model); 
     $http({ 
      method: 'GET', 
      url: '/Account/LoginAngular', 
      params: { model: $scope.model, returnUrl: $scope.returnUrl } 
     }).success(function (response) { 
      console.log(response); 
     }); 
    }; 
}); 
+0

von meinem understading "get" ist für Daten zu erhalten, "post" ist für Daten, so dass Sie drängen sollte das ändern. Sie versuchen auch, ein Winkelmodell zu einem MVC-Modell zuzuordnen. Stellen Sie sicher, dass die in Ihrem MVC-View-Modell definierten Begriffe genau mit dem übereinstimmen, was Sie in eckig definiert haben. –

+0

Anfrage erhalten keinen Anfragetext, Sie müssen POST für den Vorgang wie Login oder Registrierung verwenden und verwenden. –

Antwort

1

Versuchen Sie, die folgende Lösung:

$http({ 
     url: '/Account/LoginAngular', 
     method: "POST", 
     data: {model: $scope.model, returnUrl: $scope.returnUrl}, 
     headers: { 
      "Content-Type": "application/json" 
     } 
    }).then(function(response) { 
     // success 
    }, 
    function(response) { // optional 
     // failed 
    }); 

Alternativ können Sie versuchen:

$http.post('/Account/LoginAngular',{model: $scope.model, returnUrl: $scope.returnUrl}) 
     .success(function (data, status, headers, config) { 
      //get response 
     }) 
     .error(function (data, status, header, config) { 
      //get error details 
     }); 
+1

Verwendung von '$ .param()' nimmt an, dass jQuery verwendet wird, und es sollte nicht für '" application/json "' verwendet werden. angular hat auch einen eingebauten Serializer, der die Verwendung von '$ .param()' negiert, wenn Sie die Formcodierung verwenden möchten. Siehe https://docs.angularjs.org/api/ng/service/$httpParamSerializerJQLike – charlietfl

+0

Notiert. Danke für die Info. –

0

Verwenden POST-Methode, die Daten zu senden.

var login = angular.module('LoginApp', []); 
login.controller('LoginCtrl', function ($scope, $http) { 
$scope.name = 'Login'; 
$scope.model = { UserName: 'nothing', Password: 'nothing' }; 
$scope.model.UserName = "Test"; 
$scope.model.Password = 'Test'; 
$scope.returnUrl = '/Account/TestLogin'; 

$scope.onClick = function() { 
    console.log($scope.model); 
    $http({ 
     method: 'POST', 
     url: '/Account/LoginAngular?returnUrl=$scope.returnUrl', 
     data: $scope.model, 
    }).success(function (response) { 
     console.log(response); 
    }); 
    }; 
}); 
Verwandte Themen