GetAllCountries извлекает список стран из действия контроллера (MVC). Я не могу выделить страны для выбора элемента (как показано на рисунке вверху). С другой стороны, если я присваиваю значения как model.countries = ["India","USA"];
, это сработало. Как назначить возвращаемые значения?Невозможно назначить строку Json массива
var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model)); function StudentViewModel() { var self = this; self.students = ko.observableArray([]); self.countries =[]; self.editingItem = ko.observable(); self.isItemEditing = function(itemToTest) { return itemToTest == self.editingItem(); }; }; $(document).ready(function() { var url = '/GridDemo/GetAllCountries'; $.ajax({ url: url, success: dataRetrieved, type: 'POST', dataType: 'json' }); var model = new StudentViewModel(); //model.countries = ["India","USA"]; function dataRetrieved(data) { var strCountry = []; for (var i = 0; i<data.length; i++) { strCountry.push(data[i]); } //alert(strCountry); model.countries = strCountry; } // alert(initialData.country); //model.countries = initialData.Countries; model.students(initialData); ko.applyBindings(model); });
HTML:
<select class="form-control" data-bind="options: $root.countries, value:
Country, visible: $root.isItemEditing($data)"></select>
<label data-bind="text: Country, visible: !$root.isItemEditing($data)" />
Когда я всплывал результат JSon я получил именно: Индия, Америка, Непал.
Действие в контроллере:
public JsonResult GetAllCountries()
{
var countries = new[] { "India", "America", "Nepal" };
return Json(countries, JsonRequestBehavior.AllowGet);
}
, что делает URL URL = '/ GridDemo/GetAllCountries'; вернуть. Я не могу видеть код. Убедитесь, что он вернёт действительный json – Miller
Проверьте приведенные выше изменения. – arjun
Но в любом случае я смог разобрать результат и нажать на массив. Тем не менее назначение массива не работает (см. Выше) – arjun