我正在尝试将一个复杂的对象从angular发布到我的webapi 该项目看起来像这样
{
Name: "test",
Tax: 23,
Addresses: [ {
country: "ro",
city: "bucharest"
},
{
country: "fr",
city "paris"
}]}
和来自服务器的对象
public class Model {
public Model (){
Addresses = new List<Address>();
}
public string Name {get; set;}
public int Tax {get; set;}
public List<Address> Addresses {get; set;}
}
和地址有2个字符串属性
我的旧应用程序是用MVC5 webapi2编写的,并使用angularjs $ http服务 并且对象完美映射,现在我改为MVC6(asp.net 5)和 如果我从我的javascript对象中删除该数组,它的工作效率很高但是我没有数组,如果我添加它,那么服务器上的对象就是NULL。
我的问题是:如何使用$ resource服务将数组作为对象属性从$ resource服务发送到mvc6控制器?
答案 0 :(得分:0)
最后我让它成功了,我的例子如下:
test1.html
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28/angular.min.js"></script>
<script type="text/javascript" src="test1.js"></script>
<div ng-controller="TestController">
<div>Test</div>
</div>
</body>
</html>
test1.js
var myApp = angular.module('myApp', []);
myApp.controller('TestController', ['$scope', '$http', function ($scope, $http) {
var dataObj = {
Name: "test",
Tax: 23,
Addresses: [{
country: "ro",
city: "bucharest"
},
{
country: "fr",
city: "paris"
}]
}
$http({
url: 'http://localhost:1522/api/values',
method: 'POST',
data: JSON.stringify(dataObj),
dataType: 'json'
}).success(function (data) {
debugger;
alert("OK");
//TODO.....
}).error(function (data) {
//TODO....
});
}]);
在屏幕截图中,您可以在POST后看到我的解决方案文件夹和断点:
将网址替换为您的域名,然后通过浏览器导航至http://yourdomain/test.html以运行您的角度应用。
P.S。:当你的角度应用程序和web api在同一个域中时,它会运行。如果你想将它们分开(将角度应用程序移动到另一个域或项目),你应该配置CORS - How do you enable cross-origin requests (CORS) in ASP.NET 5 & MVC 6。