【问题标题】:pass data from http request to C# controller将数据从 http 请求传递到 C# 控制器
【发布时间】:2015-05-19 19:13:56
【问题描述】:

我的问题是当我将数据传递给 C# 控制器时,我的 loginInfo 为 null 有效负载正常并显示 stringify loginfo 但我的方法没有获取 logInfo。

服务

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;
  
}

【问题讨论】:

    标签: javascript c# angularjs angular-http


    【解决方案1】:

    您的服务应该将字符串化数据传递给服务器,因为您被声明为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 类,它会直接映射到类,你不需要反序列化它。

    【讨论】:

    • tanx man 它的工作我在控制器中对我的对象进行字符串化,我不知道必须再次对 tanx 进行字符串化
    • 谢谢..快乐编码:)
    【解决方案2】:

    进行以下更改 -

    C#

    创建一个新类-

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

    更改 LogIn 方法的参数以使用新类

    public string LogIn(LoginInformation loginInfo)
    {
    }
    

    角度

    从控制器中删除这一行(因为您提到了标题:{'Content-Type': 'application/json'})

    loginInfo = JSON.stringify(loginInfo);
    

    确保 URL (url: './data/LogIn',) 是有效的。

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多