Javascript C#ListItemCollection转换为JSON,同时保留值和文本项

Javascript C#ListItemCollection转换为JSON,同时保留值和文本项,javascript,c#,jquery,ajax,json,Javascript,C#,Jquery,Ajax,Json,我创建了一个web服务(asmx文件),它返回一个序列化的ListItemCollection,代码如下 public string getStates(string Country) { ListItemCollection lic = DBInterface.GetStates(Country); var serialized = JsonConvert.SerializeObject(lic); return serial

我创建了一个web服务(asmx文件),它返回一个序列化的ListItemCollection,代码如下

    public string getStates(string Country)
    {
        ListItemCollection lic = DBInterface.GetStates(Country);

        var serialized = JsonConvert.SerializeObject(lic);

        return serialized;
    }
            //ajax function that uses web services to get states
        function GetStates(val)
        {                  
            $.ajax({
                type: "POST",
                url: "/WebServices/getServerData.asmx/getStates",
                data: JSON.stringify({Country: val}),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    $("#ddlState").empty();
                    var parsed = JSON.parse(data.d);
                    for (var i = 0; i < parsed.length; i++) {
                        $("#ddlState").append("<option value='" + parsed[i] + "'>" + parsed[i] + "</option>");
                    }
                },
                error: function (data) {
                    alert(data.status + " " + data.statusText);
                }
            });                    
        }
当用户使用以下代码从下拉列表中选择国家时,我通过javascript调用web服务

    public string getStates(string Country)
    {
        ListItemCollection lic = DBInterface.GetStates(Country);

        var serialized = JsonConvert.SerializeObject(lic);

        return serialized;
    }
            //ajax function that uses web services to get states
        function GetStates(val)
        {                  
            $.ajax({
                type: "POST",
                url: "/WebServices/getServerData.asmx/getStates",
                data: JSON.stringify({Country: val}),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    $("#ddlState").empty();
                    var parsed = JSON.parse(data.d);
                    for (var i = 0; i < parsed.length; i++) {
                        $("#ddlState").append("<option value='" + parsed[i] + "'>" + parsed[i] + "</option>");
                    }
                },
                error: function (data) {
                    alert(data.status + " " + data.statusText);
                }
            });                    
        }
//使用web服务获取状态的ajax函数
函数GetStates(val)
{                  
$.ajax({
类型:“POST”,
url:“/WebServices/getServerData.asmx/getStates”,
数据:JSON.stringify({Country:val}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
$(“#ddlState”).empty();
var parsed=JSON.parse(data.d);
for(var i=0;i
问题是,我不仅要保留ListItemCollection文本,还要保留它的值。但是“JsonConvert.SerializeObject”只返回文本项。有人可以帮助返回值和文本,以便我可以通过javascript填充下拉列表吗


谢谢!

您可以在
System.Web.Script.Serialization
中使用
JavaScriptSerializer()

ListItemCollection lic = new ListItemCollection() {
    new ListItem("Display Text", "val1"),
    new ListItem("Display Text 2", "val2"),
};

var ser = new JavaScriptSerializer();
var serialized = ser.Serialize(lic);
结果(我自由地格式化):


请您解释一下valueWell是什么意思ListItemCollection由许多ListItems组成(它是列表项的数组),列表项既有文本属性也有值属性。当您将ListItemCollection绑定到下拉列表时,其中的每个项都将绑定一个文本和值属性。例如,城市“Texas”“的项值为23443(我将其用作数据库中的键)。我对JSON对象不太熟悉,但是我看到SerializeObject创建了一大堆项,比如{“Texas”、“Louisiana”,…}我希望它类似于{“Value”:2344,“Text”:“Texas”}这可以完成这项工作。这完美地恢复了数据!谢谢,顺便问一下,我不想问一个关于这个的问题,但是你如何正确地用javascript阅读它呢?根据上述内容,我的思路是否正确?@Eliseo我认为您不需要解析服务器的响应,因为您传入了
数据类型:“json”
,但听起来似乎不是这样。