У меня есть массив имен файлов:
[HttpPost]
public JsonResult GetJSONFilesList()
{
string[] filesArray = Directory.GetFiles("/UploadedFiles/");
for (int i = 0; i < filesArray.Length; i++)
{
filesArray[i] = Path.GetFileName(filesArray[i]);
}
return Json(filesArray);
}
Мне нужно это в AngularJS как список объектов, чтобы я мог повторить его и применить фильтры. Я не могу понять, как получить JSON из контроллера MVC в AngularJS.
Я попробовал следующее, чтобы сделать его видимым для углового захвата, но я не знаю, как заставить ng-init увидеть функцию, возвращающую список. Ошибка в «SerializeObject (GetJSONFilesList ())», говоря, что он не существует в текущем контексте.
<div ng-controller="MyController" data-ng-init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(GetJSONFilesList()),
@Newtonsoft.Json.JsonConvert.SerializeObject(Model.Done))" ng-cloak>
</div>
EDIT:
Я пытался использовать http.get.
Тестовый:
alert('page load');
$scope.hello = 'hello';
$http.get('http://rest-service.guides.spring.io/greeting').
then(function (response) {
$scope.greeting = response.data;
alert($scope.greeting);
});
alert($scope.hello);
Оповещение в http.get никогда не срабатывает, однако другие оповещения срабатывают.
Тест два:
$http({
url: '/Home/testHello',
method: 'GET'
}).success(function (data, status, headers, config) {
$scope.hello = data;
alert('hi');
});
[HttpPost]
public string testHello()
{
return "hello world";
}
Это приводит к разрыву угла и ничего в .js не работает.
Тест три
alert('page load');
$scope.hello = 'hello';
$scope.GetJSONFilesList = function () {
$http.get('/Home/testHello')
.success(function (result) {
$scope.availableFiles = result;
alert('success');
})
.error(function (data) {
console.log(data);
alert('error');
});
alert('hi');
};
alert($scope.hello);
[HttpPost]
public string testHello()
{
return "hello world";
}
Ничего не предупреждает внутри, другие оповещения работают.
Исправлено:
После некоторого поиска в Google я обнаружил, что использование .success и .error устарело и что .then следует использовать. Таким образом, с помощью .then это привело к тому, что C # был вызван с помощью отладки.
Затем, после использования console.log для возвращаемого значения, обнаружил, что для возврата чего-либо мне нужно было вернуть значение из C #, используя «return Json (myValue, JsonRequestBehavior.AllowGet);»
И, просмотрев объект в консоли в Chrome с помощью console.log, я увидел, что мои значения находятся в части данных возвращаемого объекта.
Он был сохранен в данных в виде массива (когда я передавал массив).
Затем я мог бы получить данные оттуда, назначив возвращаемое значение value.data в область видимости, и мог бы вызвать это в представлении {{result [1]}} и т. Д.
return Json(filesArray, JsonRequestBehavior.AllowGet);
$scope.fileList;
$http.get("/Home/GetFileList").then(function (result) {
console.log(result)
$scope.fileList = result.data;
})