Я создал веб-службу (asmx-файл), которая возвращает сериализованный ListItemCollection со следующим кодом.C# ListItemCollection для JSON, сохраняя значения и текстовые элементы
public string getStates(string Country)
{
ListItemCollection lic = DBInterface.GetStates(Country);
var serialized = JsonConvert.SerializeObject(lic);
return serialized;
}
Я вызываю веб-службу через javascript, когда пользователь выбирает страну из выпадающего списка, используя следующий код.
//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?
Спасибо!
могли бы вы объяснить, что вы имеете в виду значение – geo
Ну, ListItemCollection состоит из множества ListItems (его массива элементов списка), элементы списка имеют свойство text, а также свойство value. Когда вы привязываете ListItemCollection к выпадающему списку, каждый элемент будет иметь привязанность к тексту и значению. Например, город «Техас» имеет значение 23443 (которое я использовал в качестве ключа в своей базе данных). Я не очень хорошо знаком с объектами JSON, но вижу, что SerializeObject создает целую кучу элементов, таких как {«Техас», «Луизиана», ...} Я хотел бы, чтобы это было что-то вроде { «Ценность»: 2344 , «Текст»: «Техас» } – Eliseo