[英]Passing Object from JavaScript to C#
晚上好,现在我有一个用C#编写的后端项目。 我正在尝试将其连接到前端JavaScript代码。 我的js文件中的方法:
var people = [{name: "Sam", age: 40}, {name: "Vivian", age: 20}]
foo = function () {
var url = "/api/folder/foo";
$http({
method: 'GET', url: url, params: {
version: "7.1",
ppl: people <---- the passing that causes error
}
}).success(function (data, status, header, config) {
console.log("success!");
}).error(function (data, status, header, config) {
alert("server error");
});
};
那就是调用C#代码:
[HttpPost]
[ActionName("foo")]
public List<LoopItem> foo(String version, List<Person> ppl){
System.Diagnostics.Debug.WriteLine("Success!");
return repository.foo( version, ppl);
}
如您所见,我的C#代码将一个字符串和一个人的列表作为参数,这是一个简单的对象:
public class Person
{
public String name { get; set; }
public Int32 age { get; set; }
}
尽管在我的js代码中,我试图模仿C#类Person,并创建了具有相同键的对象列表,但是C#函数似乎出于某种原因似乎无法将传递的对象列表识别为Person列表。 结果,没有任何调试“成功”被打印出来。 有谁知道如何解决这个问题?
使用JSON编码/解码。
var people = [{name: "Sam", age: 40}, {name: "Vivian", age: 20}]
foo = function () {
var myJsonPeople = JSON.stringify(people);
var url = "/api/folder/foo";
$http({
method: 'POST', url: url, params: {
version: "7.1",
ppl: myJsonPeople <---- the passing that causes error
}
}).success(function (data, status, header, config) {
console.log("success!");
}).error(function (data, status, header, config) {
alert("server error");
});
};
在服务器端,您将需要以json形式接收此数据,然后将其转换为对象列表。
[HttpPost]
public string foo(string jsonList)
{
//Convert string to JSON object
//Foreach loop for conversion to objects
}
看来您的C#控制器期望POST
请求(来自[HttpPost]
属性)而不是GET
请求。 您需要相应地更改JavaScript请求。
看起来像angular的$http
服务。 所以这应该工作:
var url = "/api/folder/foo";
var params = {
version: "7.1",
ppl: people
};
$http.post(url, params)
.success( //etc
这使用$http.post
,这是发出POST
请求的快捷方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.