在C#中将对象的Json列表发布到webmethod?
我试图将对象列表(或对象数组)发布到c#Webmethod。我了解如何在方法中作为参数接收并转换为对象的本地列表在C#中将对象的Json列表发布到webmethod?,c#,jquery,ajax,json,C#,Jquery,Ajax,Json,我试图将对象列表(或对象数组)发布到c#Webmethod。我了解如何在方法中作为参数接收并转换为对象的本地列表 for (var i = 0; i < usersInfo.length; i++) { user = { UserName : usersInfo[i].UserName, Email : usersInfo[i].Email, Status : status }
for (var i = 0; i < usersInfo.length; i++) {
user = {
UserName : usersInfo[i].UserName,
Email : usersInfo[i].Email,
Status : status
};
users.push(user);
}
var results = "";
$('#lblError').val('');
if (users.length > 0) {
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'UserValidation.aspx/ShowResults',
data: "{'UsersInfo':'" + JSON.stringify(users) + "'}",
async: false,
success: function (data) {
results = data.d;
$('#lblError').val(results);
},
error: function (xhr, status, error) {
var exception = JSON.parse(xhr.responseText);
alert(exception.Message);
}
});
}
for(var i=0;i0){
$.ajax({
键入:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:'UserValidation.aspx/ShowResults',
数据:“{'UsersInfo':'”+JSON.stringify(users)+“}”,
async:false,
成功:功能(数据){
结果=数据d;
$('lblError').val(结果);
},
错误:函数(xhr、状态、错误){
var exception=JSON.parse(xhr.responseText);
警报(异常消息);
}
});
}
代码隐藏
[WebMethod]
publicstaticvoidshowresults(//这里是如何从javascript接收列表对象)
{
//将参数转换为列表
}
公共部分类UsersInfo
{
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共字符串状态{get;set;}
}
尝试替换此行
data: JSON.stringify({ UsersInfo: users}),
詹姆斯,你是对的;您需要为ShowResults参数定义正确的类型,以便绑定能够工作并将传入的json绑定到您的UsersInfo类 您的UsersInfo类似乎是一个简单的POCO,因此应该绑定而不使用任何自定义绑定逻辑:
[WebMethod]
public static void ShowResults(List<UsersInfo> UsersInfo)
{
//No need to convert
}
[WebMethod]
公共静态无效显示结果(列出用户信息)
{
//不需要转换
}
publicstaticvoidshowresults(…)中的参数是什么?JSON.stringify
和双重序列化的用途是什么?data:{UsersInfo:users}
还不够吗?我可以这样使用ShowResults(List UsersInfo)?@James123对不起,你的问题是关于前端的。。我没有足够的经验来回答你的“后端”问题。但是你应该能够从发布的表单中读取数据。@dot自由职业者,但我的建议也可以做到这一点。您的代码将对象转换为json字符串,然后该字符串将转换为另一个json字符串(第二个字符串由$.ajax自动完成)。因此,您的代码将发布“{a\”:“test\”}
,而不是{a\”:“test\”}
,这将需要在服务器端进行另一次不必要的反序列化。感谢L.B更新:我错过了json参数名称映射。
[WebMethod]
public static void ShowResults(List<UsersInfo> UsersInfo)
{
//No need to convert
}