У меня есть список объектов, которые были преобразованы в JSON, которые я хочу загрузить в свой элемент управления автозаполнения KendoUi.
Этот код не работает
@{
var suburbs = Html.Raw(Json.Encode(Model.Suburbs));
<script>
$(function () {
var data = '@suburbs';
$("#sSuburb").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select suburb...",
dataTextField: "SuburbName",
dataValueField: "ID",
separator: ", "
});
});
<script>
}
но почему этот работает
var data = [{ "ID": 1, "SuburbName": "NEWSTEAD", "PostCode": "4006", "State": "QLD", "CountryCode": 1 }, { "ID": 2, "SuburbName": "NEWSTEADS", "PostCode": "4006", "State": "QLD", "CountryCode": 1 }, { "ID": 4, "SuburbName": "NEWS", "PostCode": "4006", "State": "QLD", "CountryCode": 1 }, { "ID": 5, "SuburbName": "NEWSTEST", "PostCode": "4006", "State": "QLD", "CountryCode": 1 },];
$("#sSuburb").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select suburb...",
dataTextField: "SuburbName",
dataValueField: "ID",
separator: ", "
});
Излишне говорить, что результат JSON одинаков в обоих примерах. Есть ли что-то, что мне здесь не хватает?
ОБНОВИТЬ:
Я также пробовал JSON.Stringify, но все равно не повезло
var data = JSON.stringify(@suburbs);
это фактический результат json, когда я использую предупреждение (данные);
[{"ID":1,"SuburbName":"NEWSTEAD","PostCode":"4006","State":"QLD","CountryCode":1},{"ID":2,"SuburbName":"NEWSTEADS","PostCode":"4006","State":"QLD","CountryCode":1},{"ID":4,"SuburbName":"NEWS","PostCode":"4006","State":"QLD","CountryCode":1},{"ID":5,"SuburbName":"NEWSTEST","PostCode":"4006","State":"QLD","CountryCode":1},{"ID":6,"SuburbName":"NETWORK","PostCode":"9006","State":"QLD","CountryCode":1},{"ID":7,"SuburbName":"NEW JERS","PostCode":"9006","State":"QLD","CountryCode":1},{"ID":8,"SuburbName":"SYDNEY","PostCode":"2001","State":"NSW","CountryCode":1},{"ID":9,"SuburbName":"SYDNEYHAM","PostCode":"2001","State":"NSW","CountryCode":1},{"ID":10,"SuburbName":"SYD","PostCode":"2001","State":"NSW","CountryCode":1},{"ID":11,"SuburbName":"SYRACUSE","PostCode":"2001","State":"NSW","CountryCode":1},{"ID":12,"SuburbName":"SYDTEST","PostCode":"9001","State":"NSW","CountryCode":1},{"ID":13,"SuburbName":"SYDDD","PostCode":"9001","State":"NSW","CountryCode":1}]
очевидно то же самое с жестко запрограммированным.
но когда я просматриваю его в firebug и НАБЛЮДАЮ переменную data
в первом примере, кажется, что она обрабатывается так же, как обычная строка
"[{"ID":1,"SuburbName":"NEWSTEAD","PostCode":"4006","State":"QLD","CountryCode":1},{"ID":2,"SuburbName":"NEWSTEADS","PostCode":"4006","State":"QLD","CountryCode":1}....
а во втором примере часы firebug показывают
[Object { ID=1, SuburbName="NEWSTEAD", PostCode="4006", more...}, Object { ID=2, SuburbName="NEWSTEADS".......
*Обратите внимание на Object
во втором. * Второй работает нормально.
@suburbs
? - Вы можете получить его с помощью Console.log(@suburbs
) или alert(@suburbs
). Это поможет определить проблему. - person Paritosh   schedule 25.06.2013data
, и похоже, что в первом примереdata
обрабатывался как обычная строка, а во втором это был список объектов - person lincx   schedule 25.06.2013[{"ID":1,"SuburbName":"NEWSTEAD","PostCode":"4006","State":"QLD","CountryCode":1}....
- person lincx   schedule 25.06.2013[Object { ID=1, SuburbName="NEWSTEAD", PostCode="4006", more...}, Object { ID=2, SuburbName="NEWSTEADS".....
- person lincx   schedule 25.06.2013Html Helper
-т.е.-@(Html.Kendo().AutoComplete().BindTo(Model.Suburbs)
- Демо - person Paritosh   schedule 25.06.2013@Url.Action("ActionName", "ControllerName", new { parameter = "" })
вместо жесткого кодирования. - person Paritosh   schedule 25.06.2013