我正在尝试使用Ionic框架创建一个可以将数据发送到MS SQL服务器的应用程序。为此我使用web api。我在获取数据方面没有问题,但发送新数据有问题。这是我的离子代码:
angular.module('starter.controllers',[])
.controller('CheckListCtrl', function($scope, ChecklistService, $ionicPopup) {
function addCheck(){
ChecklistService.addCheck()
}
.factory('ChecklistService', ['$http', function ($scope, $http) {
var urlBase = 'http://localhost:56401/api';
var CityService = {};
CityService.addCheck = function(){
var url = urlBase + "/TBLCHECKLISTs"
var checkdata = {
AKTIF : true,
SIL : false,
KAYITTARIHI : Date.now(),
KULLANICIID : 3,
BASLIK : "Onur",
TAMAMLANDI : false,
TAMAMLANMATARIHI : null,
GUN : 1
}
var request = $http({
method: 'POST',
url: url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: checkdata
});
return request;
}
return CityService;
}]);
这是我的网页api:
[HttpPost]
[ResponseType(typeof(TBLCHECKLIST))]
public IHttpActionResult PostTBLCHECKLIST(TBLCHECKLIST tBLCHECKLIST)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
tBLCHECKLIST.KAYITTARIHI = DateTime.Now;
db.TBLCHECKLISTs.Add(tBLCHECKLIST);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = tBLCHECKLIST.TABLEID }, tBLCHECKLIST);
}
当我尝试发送时,我得到了这个例外:
之后,我意识到我接受了这个例外,因为我的checkdata永远不会来到web api。我不知道为什么。
这些不是我发送的数据:
我尝试了不同版本的帖子请求,但没有。当我尝试使用PostMan发送数据时,它可以工作,我可以将数据插入到我的数据库中。但为什么我不能用我的申请呢?有人能帮助我吗?
答案 0 :(得分:0)
我认为这应该是问题所在:
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
试试这个:
return $http.post(url, checkdata);
在你的API中:
[HttpPost]
[ResponseType(typeof(TBLCHECKLIST))]
public IHttpActionResult PostTBLCHECKLIST([FromBody]TBLCHECKLIST tBLCHECKLIST)
{
//code here
}
另外,请确保您的checkdata
属性与TBLCHECKLIST
c#类型的属性相匹配。