javascript - C# ListItemCollection 到 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 serialized;
    }

当用户使用以下代码从下拉列表中选择一个国家/地区时,我通过 JavaScript 调用 Web 服务。

            //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);
                }
            });                    
        }

问题是我不仅想保留 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);

结果(我冒昧地格式化了):

[
    {
        "Attributes": {
            "Keys": [],
            "Count": 0,
            "CssStyle": {
                "Keys": [],
                "Count": 0,
                "Value": null
            }
        },
        "Enabled": true,
        "Selected": false,
        "Text": "Display Text",
        "Value": "val1"
    },
    {
        "Attributes": {
            "Keys": [],
            "Count": 0,
            "CssStyle": {
                "Keys": [],
                "Count": 0,
                "Value": null
            }
        },
        "Enabled": true,
        "Selected": false,
        "Text": "Display Text 2",
        "Value": "val2"
    }
]

关于javascript - C# ListItemCollection 到 JSON,同时保留值和文本项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116237/

相关文章:

javascript - 为什么在 DOM 树的头节点和正文节点之间有一个文本节点?

Javascript 延迟加载空白页

javascript - 使用 jQuery 旋转 div(隐藏/淡入)

javascript - 如何访问javascript数组包含对象中的responsedata

javascript - 在不重新加载页面的情况下提交表单数据

asp.net - Google map 上的多个标记

c# - 在 INSTEAD OF INSERT 中设置列​​的值

c# - Unity 5 - UNET - 将拖动的游戏对象同步为客户端(HL2 重力枪风格)

c# - Google Drive API/SDK,使用服务帐户更改所有者失败

jquery - 一起匹配表