【发布时间】:2018-10-01 10:16:48
【问题描述】:
我正在迁移一个应用程序,所以这段代码已经可以工作了。
我有一个角度函数来创建随机 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 而不是截断为整数。我仔细检查了一下,数据和模型字段名称是一样的。
【问题讨论】:
-
使用
$.param()加载后data的外观如何? -
@lex 不知道你能不能在这里理解。但看起来还可以
avl_list%5B0%5D%5Btracker_avl_id%5D=2126&avl_list%5B0%5D%5Bcar_id%5D=712&avl_list%5B0%5D%5Bx_lat%5D=-66.616149&avl_list%5B0%5D%5By_long%5D=9.25226&avl_list%5B0%5D%5Bazimuth%5D=173&avl_list%5B0%5D%5Bevent_time%5D=2016-09-28+06%3A02&avl_list%5B1%5D%5Btracker_avl_id%5D=739125&avl_list%5B1%5D%5Bcar_id%5D=7203&avl_list%5B1%5D%5Bx_lat%5D=-68.003599&avl_list%5B1%5D%5By_long%5D=9.043924&avl_list%5B1%5D%5Bazimuth%5D=1&avl_list%5B1%5D%5Bevent_time%5D=2016-09-28+05%3A03 -
是的,很糟糕。我想我希望它已经调整了纬度/经度参数。我难住了。这是 Web API 2 后端吗?只是把它扔在那里,但我们从来不需要序列化或添加任何配置内容(并且我们返回一个 IHttpActionResult)。
-
@lex as OJ 建议我尝试从十进制更改为字符串并获取数据。但这感觉不对。它是一个带有附加操作的 MVC 5 控制器
标签: c# jquery angularjs asp.net-mvc type-conversion