我试图将数据从我的网页发布到我的RegistrationController Api。我在提交表单时看到它,但是当我在WebApi上点击断点时,参数' pilot'一片空白。有人能告诉我我需要做什么才能将数据从网页传递到Registration ApiController吗?
我看到了这个post,但它似乎对我不起作用。这个post与我的问题很接近,提到该模型需要注释,但仍然不适用于我。
cshtml页面上的按钮:
<script type="text/javascript">
'use strict';
var sampleApp = angular.module('RegistrationApp', []);
sampleApp.controller('RegistrationController', function ($scope, $http) {
var registrationData = {
"firstname": $scope.firstname,
"lastname": $scope.lastname,
"faaNumber": $scope.faaNumber
};
$('#submitRegistration').click(function () {
registrationData = {
FirstName: $scope.firstname,
LastName: $scope.lastname,
FAANumber: $scope.faaNumber
};
// When I hit this debugger, the data is good.
debugger;
$.post("api/registration",
JSON.stringify(registrationData),
function (value) {
$('#registrationMessage').append(value);
},
"json"
);
});
});
</script>
Angular RegistrationController:
public class RegistrationController : ApiController
{
// *********** Pilot is null when the breakpoint hits here ************
public HttpResponseMessage Post([FromBody]PilotModel pilot)
{
this.RegisterPilot(pilot);
var response = Request.CreateResponse<PilotModel>(HttpStatusCode.Created, pilot);
return response;
}
private string RegisterPilot(PilotModel pilot)
{
var result = string.Empty;
...
return result;
}
}
WebApi RegistrationController类:
[DataContract]
public class PilotModel
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string FAANumber { get; set; }
}
试点模型:
mystring="something something something schwifty3 something"
答案 0 :(得分:2)
由于您要发布角度代码中的数据,因此您应该使用$http
服务,该服务将根据需要设置正确的内容类型。看起来您已经将$ http服务注入控制器。
var model = { FirstName: "Shyju",
LastName: "Happy"
FAANumber: "3454353" };
$.http("api/registration",model)
.then(function(response) {
var result=response.data;
console.log(result);
}, function(response) {
//error happened. Inform the user
});
理想情况下,您应该将http调用移动到数据服务,并将该数据服务注入角度控制器。
如果您仍想使用jQuery ajax(我不建议使用),您可以将对象转换为json字符串并将contentType
属性指定为"application/json"
。即使您的模型具有复杂的导航属性,此方法也会起作用。
$.ajax({
type: "POST",
data :JSON.stringify(model),
url: "api/registration",
contentType: "application/json"
});
查看this answer,其中涵盖了几乎所有使用ajax向web api发送数据的用例。
答案 1 :(得分:1)
只需一分钟,试一试:
$.post("api/registration",
registrationData,
function (value) {
$('#registrationMessage').append(value);
},
"json"
);