如何在c#中的list <string>中获取set id值

时间:2016-06-08 01:36:27

标签: c# jquery extjs

附加代码:

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 ??

1 个答案:

答案 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"]。 (这可能是也可能不是,因为在字典中,您现在可以区分未发送的值和来自前端的默认值 - 但最好记住它。)