附加代码:
var frameid = $('iframe').attr('id');
var aData = $($($('#' + frameid).contents()).find('#form1')[0]).find("input, select, textarea").not("#__VIEWSTATEGENERATOR").serialize();
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
url: "cms001Detail.aspx/saveRecord",
data: JSON.stringify(aData),
success: function (Record) {
alert('success');
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(JSON.stringify(aData));
alert(xhr.responseText);
//Ext.Msg.alert(xhr.responseText, thrownError);
}
});
内幕代码:
public static void saveRecord(List<string> aData)
{
try
{
Dictionary<String, EntityObject> param = new Dictionary<string, EntityObject>();
users users = new users();
users.id = "save3";
foreach (object items in aData)
{
Console.WriteLine(items);
}
//users.user_login = aData[0].ToString();
////users.password = password;
//DateTime passExpDate;
//if (DateTime.TryParse(passwordExpiryDate, out passExpDate))
//{
// users.pwd_exp_date = DateTime.Parse(passwordExpiryDate);
//};
//users.name = fullName;
//users.user_type = "";
//users.email = email;
//users.acc_status = "A";
//users.role = "";
users.last_logon_dt_tm = null;
users.failed_count = null;
users.created_by = "ME1";
users.created_on = DateTime.Now;
param.Add(users.GetType().Name, users);
LazyDB ldb = new LazyDB();
ldb.Save(param);
TipBoxHelper.ShowNotify("Record Inserted");
}
catch (SqlException ex)
{
TipBoxHelper.ShowErroNotify("SQL Exception");
}
catch (Exception ex)
{
TipBoxHelper.ShowErroNotify(ex.ToString());
}
}
在foreach循环中,我需要像这样设置id值:
var id = aData.id ??
答案 0 :(得分:0)
C#是一种强类型语言。虽然.NET会自动将松散类型的JSON处理为对象,但它希望您提供具有匹配数据类型的变量,并且会丢弃任何意外值。如果发送一个对象数组并提供变量List<string>
,它将丢弃您发送的每个信息,因为该变量无法保存它。因此,您将无法获得id
或其他任何内容。
如果您将数据发送为[{id:3,name:'Test'},{id:4,name:'Test2']
,则希望您提供例如
List<AData> aData;
将AData
类型定义为
public class AData {
int id;
string name;
}
如果您已完成此操作,则可以使用id
获取列表中每个项目的aData[i].id
。如果一个对象中未提供id,则aData[i].id
的相应值将是数据类型的默认值,在本例中为0
。
如果您不知道期望哪些字段,您还可以使用字典:
List<Dictionary<string,object>> aData
然后 aData[i]["id"]
将保存您要搜索的值。但要注意:如果在一个JSON对象中没有提供id
,则在使用IndexOutOfRangeException
时将抛出aData[i]["id"]
。 (这可能是也可能不是,因为在字典中,您现在可以区分未发送的值和来自前端的默认值 - 但最好记住它。)