我正在迁移应用程序,因此此代码已经正常运行。
我有一个角度函数来创建随机avl输入来测试我的api。
$scope.createAvl = function () {
console.log($scope.avl); // for debug
$scope.avl.push({
'tracker_avl_id': getRandomArbitrary(0, 1000000, 1),
'car_id': getRandomArbitrary(0, 10000, 1),
'x_lat': getRandomArbitrary(-69, -66, 0),
'y_long': getRandomArbitrary(8, 10, 0),
'azimuth': getRandomArbitrary(0, 359, 1),
'event_time': getRandomDate()
});
};
如您所见,数据已创建并在页面上正确显示
然后使用Save Avl函数发送数据
$scope.saveAvl = function () {
var data = $.param({
avl_list: $scope.avl
});
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
}
};
$http.post('/Avl_Api/traffic_tracker_avl/putTrafficAvl', data, config)
.success(function (data, status, headers, config) {
console.log('Sucess.....');
})
.error(function (data, status, header, config) {
$scope.ResponseDetails = "Data: " + data +
"<hr />status: " + status +
"<hr />headers: " + header +
"<hr />config: " + config;
});
};
问题出在我的控制器上我为avl_list
所有元素的坐标x,y得到0所有其他字段都可以。
public partial class traffic_tracker_avl
{
public int avl_id { get; set; }
public long tracker_avl_id { get; set; }
public long car_id { get; set; }
public decimal x_lat { get; set; }
public decimal y_long { get; set; }
public int azimuth { get; set; }
public System.DateTime event_time { get; set; }
public Nullable<System.DateTime> created_at { get; set; }
}
[HttpPost]
public JsonResult putTrafficAvl(List<traffic_tracker_avl> avl_list)
{
avl_list.ForEach(n => db.traffic_tracker_avl.Add(n));
db.SaveChanges();
}
我猜是否与十进制字段有关?但奇怪的是得到0而不是截断为整数。我仔细检查,数据和模型字段名称是相同的。
答案 0 :(得分:0)
如果您所使用的计算机文化不是英语,而是西班牙语,那么-68.504806
的值不是有效数字。
有几种解决方案:一种更简单的解决方案是首先将其绑定到模型中的string
属性,然后使用代码将其映射到正确的数字:
string x_lat_input = String.Empty; // use this in your model property
var x_lat = Convert.ToDecimal(x_lat_input, CultureInfo.CurrentCulture);