Я использую angularjs в asp.net
Я сделал контроллер с CRUD и пытаюсь получить данные из angularjs контроллера с помощью $ службы HTTP
Маршрут PARAMS получает правильное querys из URL, я проверял это, но я получаю сообщение об ошибке неопределенной при запросе данных
что я делаю неправильно? :(
Метод SongsController.cs:
public ActionResult Index(string id)
{
/*var result = db.Songs.ToList();
return Json(result, JsonRequestBehavior.AllowGet);*/
string searchString = id;
var songs = from m in db.Songs
select m;
if (!String.IsNullOrEmpty(searchString))
{
songs = songs.Where(s => s.Title.Contains(searchString));
}
return Json(songs, JsonRequestBehavior.AllowGet);
}
songsService.js:
myApp.factory('songsService', ['$http', function ($http) {
var songsService = {};
songsService.getSongs = function (param) {
return $http.get('/Songs/Index/' + param);
}
return songsService;}])
songsController.js:
myApp.controller('songsController', ['$scope', '$routeParams', 'songsService', function ($scope, $routeParams, songsService) {
var search = $routeParams.query;
if (search == 'undefined' || search == null)
search = '';
getSongs(search);
function getSongs(searchText) {
songsService.getSongs(searchText)
.success(function (data) {
$scope.songs = data;
})
.error(function (error) {
$scope.status = 'Unable to load data: ' + error.message;
console.log($scope.status);
});
}}]);
РЕДАКТИРОВАТЬ: класс песни:
using System;
using System.Collections.Generic;
public class Song
{
public int ID { get; set; }
public string Title { get; set; }
public string Artist { get; set; }
public virtual ICollection<Navigation> Navigations { get; set; }
}
EDIT2: Навигация Класс:
using System;
public class Navigation
{
public int ID { get; set; }
public int SongID { get; set; }
public int PlaylistID { get; set; }
public virtual Song Song { get; set; }
public virtual Playlist Playlist { get; set; }
}
EDIT3: Если я называю мой .cs контроллер SongsController и перейти к URL песни/индекса/что-то я получаю всплывающее окно, если я хочу, чтобы открыть или сохранить something.json и просто попадаю обратно к моему URL по умолчанию, определяемой ngroute (#/песни /)
Но, если я назвать .cs контроллер что-то еще, как RandomController, если я перейти на тот же URL я получаю эту ошибку:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Navigation_7A1A3B789B740F23BAB0A6DAABE519BE3AF91C300893047C23FF2FD8C44E6705'.
EDIT4: Я пришел к точке, в которой все, если мой SongsController.cs выглядит следующим образом:
public ActionResult Index(string id)
{
var song = new List<Song>
{
new Song{Title="Paint It Black",Artist="Rolling Stones"},
new Song{Title="People Are Strange",Artist="The Doors"},
new Song{Title="With Or Without You",Artist="U2"},
new Song{Title="Wish You Were Here",Artist="Pink Floyd"},
new Song{Title="Fluorescent Adolescent",Artist="Arctic Monkeys"},
new Song{Title="La Guitarra",Artist="Orjan Nilsen"},
new Song{Title="Ping Pong",Artist="Armin Van Buuren"},
new Song{Title="Fade Out Lines",Artist="The Avenger"},
new Song{Title="Redemption Song",Artist="Bob Marley"},
new Song{Title="Wherever I May Roam",Artist="Metallica"},
};
return Json(songs, JsonRequestBehavior.AllowGet);*/
}
Если это так все работает, но если это выглядит как я уже писал в оригинальном посте я получить неопределенную ошибку при запуске $ http.get:/
EDIT5: Хорошо, я считаю, проблема в том, что я пытаюсь отправить объекты, содержащие массив объектов класса навигации, как я могу это решить? :(
Не могли бы вы поделиться своим классом 'Песни'? Вы проверили круглую ссылку? Кроме того, всегда полезно не возвращать объекты сущности сами, попробуйте сделать проекцию и/или класс модели для возвращаемых значений. – Fedaykin
Я добавил класс Song, Songs является частью контекстного класса PlayerContext – intern
Вы пытались выполнить запрос на получение независимо от Angular, просто скопировав и вставив URL-адрес в ваш браузер? Это что-то возвращает? Если не проблема, возможно, у вас нет надлежащей настройки маршрутизации в MVC: https://msdn.microsoft.com/en-us/library/cc668201.aspx – jstromwick