I автогенерируемой ADO.NET Entity модели базы данных для моей angularJS с помощью базы данных приложения показали ниже:ASP.NET - контроллер не может извлекать данные из базы данных
У меня есть проблема с отображением всех результатов от база данных. Когда я вызываю функцию для получения всех данных из базы данных, я получил этот результат (ведьма меня сбивает с толку):
Это результат запроса AJAX (я не знаю, как и почему результат является HTML-страницей/шаблоном) .. .:
<!DOCTYPE html>
<html ng-app="contactsManager">
<head>
<title>Contacts</title>
</head>
<body>
<div class="navbar navbar-top">
<link href="/Content/bootstrap.min.css" rel="stylesheet" />
<link href="/Content/custom.css" rel="stylesheet" />
<div class="navbar-inner">
<div class="container">
<h2>Contacts</h2>
</div>
</div>
</div>
<div ng-view class="example-animate-container"
ng-animate="{enter: 'example-enter', leave: 'example-leave'}"></div>
<script src="/Scripts/angular.js"></script>
<script src="/Scripts/angular-route.js"></script>
<script src="/Scripts/application/application.js"></script>
<script src="/Scripts/application/controllers.js"></script>
<script src="/Scripts/application/contactsService.js"></script>
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
{"appName":"Chrome","requestId":"855308fe8e4849c09afe6746e4d4fab6"}
</script>
<script type="text/javascript" src="http://localhost:53083/9ef1ca62e8c144c68814e88ffffbd4a7/browserLink" async="async"></script>
<!-- End Browser Link -->
</body>
</html>
Кто-нибудь знает, почему я получаю этот вывод и почему мне не хватает данных из базы данных?
Вот код, который я использовал:
ContactsController.cs
public class ContactsController : ApiController
{
ContactsEntities db = new ContactsEntities();
//get all
[HttpGet]
public IEnumerable<Contact> Get()
{
return db.Contacts.AsEnumerable();
}
//get customer by id
public Contact Get(int id)
{
Contact contacts = db.Contacts.Find(id);
if (contacts == null)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
}
return contacts;
}
//update
public HttpResponseMessage Put(int id, Contact contact)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
if (id != contact.id)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
db.Entry(contact).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
return Request.CreateResponse(HttpStatusCode.OK);
}
//insert
public HttpResponseMessage Post(Contact contact)
{
if (ModelState.IsValid)
{
db.Contacts.Add(contact);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, contact);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = contact.id }));
return response;
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
и здесь angularJS контроллер для приложений интерфейса:
app.controller('ContactsController', [
'$scope', '$http', '$location', 'contactsService',
function ($scope, $http, $location, contactsService) {
$http.get('/#/contacts/').success(function (data) {
console.log(data);
$scope.contacts = data;
// $scope.loading = false;
})
.error(function() {
alert ("An Error has occured while loading posts!");
// $scope.loading = false;
});
$scope.editContact = function (id) {
$location.path('/edit-contact/' + id);
};
$scope.displayContact = function (id) {
$location.path('/display-contact/' + id);
};
$scope.showDetails = function (id) {
var el = angular.element(document.getElementById('#ct-details-' + id));
el.toggleClass('details-hidden');
}
}
]);
Вы ожидали данные в формате JSON из контроллера? Если это так, вам может потребоваться указать его как возвращаемый тип. – Dan
Я следил за учебником, и репетитор ничего не упоминал о данных JSON. Когда я отображаю данные запроса, я получил вывод HTML, который подключен ... – jureispro