2015-03-17 1 views
1

Сервиспередать данные из запроса HTTP в C# контроллер

comaxApp.factory('user', function($http) { 
    return { 
    login: function(loginInfo) { 
     $http({ 
     url: './data/LogIn', 
     method: "POST", 
     data: loginInfo, 
     headers: { 
      'Content-Type': 'application/json' 
     } 
     }).success(function(data, status, headers, config) { 
     $scope.users = data.users; 
     }).error(function(data, status, headers, config) { 
     $scope.status = status + ' ' + headers; 
     }); 
    } 
    }; 
}); 

Контроллер

$scope.login = function() { 
    var loginInfo = { 
     "user": "admin", 
     "password": "123" 
    }; 
    loginInfo = JSON.stringify(loginInfo); 
    user.login(loginInfo).then(function(users) { 
     $scope.users = users.data; 
    }, function(status) {}); 
}; 

MVC контроллер

public string LogIn(string loginInfo) { 

    var obj = new JavaScriptSerializer(); 
    var result = obj.DeserializeObject(loginInfo); 


    var db = new comaxDataEntities(); 
    var linq = db.accounts.Where(u => u.userName == loginInfo); 
    var useraccount = linq.FirstOrDefault <account>(); 

    var javaScriptSerializer = new JavaScriptSerializer(); 
    string jsonString = javaScriptSerializer.Serialize(useraccount); 
    return jsonString; 

} 

эй геи мои Пробл em, когда я передаю данные контроллеру C#, мой loginInfo равен null Полезная нагрузка - это нормально и показать stringify loginfo, но мой метод не получает logInfo. пожалуйста, помогите мне, я новичок в C# часть

службы

ответ

2

Вы должны передавать stringify данные на сервер, так как вы объявили параметр в виде строки в действии, как JSON.stringify({loginInfo: loginInfo})

КОД

$http({ 
    url: './data/LogIn', 
    method: "POST", 
    data: JSON.stringify({ 
     loginInfo: loginInfo 
    }), 
    headers: { 
     'Content-Type': 'application/json' 
    } 
}).success(function(data, status, headers, config) { 
    $scope.users = data.users; 
}).error(function(data, status, headers, config) { 
    $scope.status = status + ' ' + headers; 
}); 

Для более лучшим способом я бы предпочел создать loginInfo-класс на стороне сервера, который будет непосредственно сопоставлен с классом, вам не нужно его сериализовать.

+0

tanx man его работа i строит мой объект в контроллере, и у меня нет идеи о том, что нужно снова подкрепить tanx –

+0

Спасибо .. Happy Coding :) –

0

сделать следующие изменения -

C#

создать новый класс -

public class LoginInformation 
{ 
    public string user { get; set;} 
    public string password { get; set; } 
} 

изменения параметра метода Войти использовать новый класс

public string LogIn(LoginInformation loginInfo) 
{ 
} 

Угловой

удалить эту линию от контроллера (так как вы уже упоминали заголовки: { 'Content-Type': 'применение/JSON'})

loginInfo = JSON.stringify(loginInfo); 

убедитесь, что URL-адрес (URL:»./data/ LogIn ',) является допустимым.

 Смежные вопросы

  • Нет связанных вопросов^_^