2014-12-26 5 views
-2

I автогенерируемой ADO.NET Entity модели базы данных для моей angularJS с помощью базы данных приложения показали ниже:ASP.NET - контроллер не может извлекать данные из базы данных

Database model

У меня есть проблема с отображением всех результатов от база данных. Когда я вызываю функцию для получения всех данных из базы данных, я получил этот результат (ведьма меня сбивает с толку):

Это результат запроса 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'); 
     } 

    } 
]); 
+0

Вы ожидали данные в формате JSON из контроллера? Если это так, вам может потребоваться указать его как возвращаемый тип. – Dan

+0

Я следил за учебником, и репетитор ничего не упоминал о данных JSON. Когда я отображаю данные запроса, я получил вывод HTML, который подключен ... – jureispro

ответ

2

Я думаю, ниже линии, которая возвращает вы html

$http.get('/#/contacts/').success(function (data) {

Вы не должны использовать это/#/контакты/в URL, как это рендеринг HTML окна контактов, вместо вы должны использовать URL в REST API сервиса вы реализованным. Нечто подобное

$http.get('http://localhost:1234/contacts').success(function (data) {

+0

Когда я использую ваш код, я получил HTTP 404 error – jureispro

+1

Нельзя использовать URL http: // localhost: 1234/contacts as is. Вы должны использовать свой отдых. Просто я привел вам пример. Надеюсь, это имеет смысл. – marulasiddappa

+0

Я изменил: 1234, чтобы соответствовать порту, что ссылка asp.net на мой url – jureispro

Смежные вопросы