我创建了一个 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/