【发布时间】:2015-05-26 15:42:13
【问题描述】:
我正在尝试在 JavaScript 中创建模型并通过 $http.post 将其发布到 ASP.NET MVC 控制器方法。在检查发布的 JSON 时,我的 Address 属性被填充。但是,当命中 ASP.NET MVC 控制器时,所有对应的 Address 属性都为空。
角度控制器方法:
$scope.submitForm = function(isValid) {
alert("Form is valid!");
var member = {
TempCardNumber: $scope.tcardno,
Title: $scope.title,
FirstName: $scope.firstName,
LastName: $scope.lastName,
Address: [
{
AddressLine1: $scope.address1,
AddressLine2: $scope.address2,
AddressLine3: $scope.address3,
AddressLine4: $scope.address4,
TownCity: $scope.towncity,
County: $scope.county,
PostCode: $scope.postcode,
PhoneNumber: $scope.phone
}
],
EmailAddress: $scope.email
};
$http({
method: 'POST',
url: '/Home/Index',
data: member
}).success(function (data, status, headers, config) {
});
}
发布的 JSON:
{"TempCardNumber":"633341677489986320","Title":"Mr","FirstName":"test","LastName":"user","Address":[{"AddressLine1":"8 Eaton Close","AddressLine2":" Hatton","TownCity":" Derby","County":" Derbyshire","PostCode":" DE65 5ED","PhoneNumber":"01234567890"}],"EmailAddress":"test@gmail.com"}
ASP.NET MVC 控制器:
public ActionResult Index([FromBody]MemberModel model)
{
// do stuff
}
我已经尝试对 JSON 进行字符串化,在我的 Angular 帖子中将其作为 data: member 传递,并在 ASP.NET MVC 方法上使用 [FromBody],但始终 model.Address 属性为空。
我是否可以在不将每个属性发布到我的 ASP.NET MVC 控制器的情况下做到这一点?
编辑:为清楚起见添加了 MemberModel POCO
// MemberModel class
public string Title {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public Address Address{get;set;}
public string TempCardNumber {get;set;}
public string Email {get;set;}
// Address POCO
public string AddressLine1 {get;set;}
public string AddressLine2 {get;set;}
public string AddressLine3 {get;set;}
public string AddressLine4 {get;set;}
public string TownCity {get;set;}
public string County {get;set;}
public string Postcode {get;set;}
public string PhoneNumber {get;set;}
【问题讨论】:
-
BindModel应该在某个地方...如果在服务器端的 POST 事件中,它应该基于输入类型的模型绑定,如果不是,则对象无法转换正确..你能告诉我们你的班级模型MemberModel吗? -
您是否不需要在某处设置内容类型,以便告诉 ASP.NET MVC 您正在发布 JSON?尝试将
headers: { "Content-Type": "application/json" }添加到您的$http请求中。 -
MemberModel 类添加
标签: javascript asp.net-mvc angularjs