AngularJS не показывает данные Entity Framework

0

{{project.ProjectName}} не показывает никаких данных в моем браузере. У меня есть данные в db, у меня есть необходимые файлы сценариев ref'd в моем _Layout и ng-app="myApp" в теле. Отладка контроллера возвращает 1 строку данных. Не уверен, что я делаю неправильно. Он должен показать 1 строку с именем проекта.

контроллер:

 public ActionResult Index()
        {
            return View();
        }

    public JsonResult GetAllProjects()
    {
        EEDBEntities db = new EEDBEntities();
        var result = db.Projects.ToList();
        return Json(result, JsonRequestBehavior.AllowGet);
    }

App.js:

var myApp = angular.module('myApp', []);

myApp.controller('mainController', function($scope, $http) {
    $http.get('/home/GetAllProjects')
        .success(function(result) {
            $scope.projects = result;
        })
        .error(function(data) {
            console.log(data);
        });
});

Index.cshtml:

<h3>
    All Projects
</h3>
<div ng-controller="mainController">
    <table class="table table-striped">
        <tr ng-repeat="project in projects">
            <td>{{project.ProjectName}}</td>
            <td class="text-right">
                <button class="btn-danger">X</button>
            </td>
        </tr>
    </table>
</div>
  • 0
    Не могли бы вы попробовать показать {{projects}} чтобы проверить, загружены projects или нет.?
  • 0
    <h3> Все проекты </ h3>
Показать ещё 4 комментария
Теги:
asp.net-mvc
entity-framework-6

2 ответа

1
Лучший ответ

Попробуйте поместить это в свой конструктор EF DbContext

base.Configuration.ProxyCreationEnabled = false;

Предполагая, что вы сначала выполняете EF-код.

public YourDbContext()
            : base("name=ConnectionString")
        {
            base.Configuration.ProxyCreationEnabled = false;
        }
  • 0
    да, вот что я сделал, чтобы заставить его работать. Я воздаю тебе должное за это.
0

Он может быть исправлен, если вы используете ViewModel вместо отправки данных Entity Framework в свой вид.

Как и в вашем примере, вам кажется, что вам нужно свойство ProjectName, которое будет выглядеть примерно так:

public JsonResult GetAllProjects()
{
    EEDBEntities db = new EEDBEntities();
    var result = db.Projects.Select(p => new {
        p.ProjectName
        //add other properties if you need to
    }).ToList();
    return Json(result, JsonRequestBehavior.AllowGet);
}

Приведенный пример с анонимным объектом, но вы также можете использовать реальный ViewModel, просто измените Select() на следующее:

    var result = db.Projects.Select(p => new ProjectViewModel {
        ProjectName = p.ProjectName
        //add other properties if you need to
    }).ToList();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню