передача данных от контроллера mvc к угловому контроллеру и области

0

В контроллере MVC я пытаюсь передать коллекцию данных обратно в представление.

private string GetEntityList()
        {
            var entities = new[]
            {
               new EntityList{ EntityId = 1, EntityName = "Entity 1"},
               new EntityList{ EntityId = 2, EntityName = "Entity 2"},
               new EntityList{ EntityId = 3, EntityName = "Entity 3"},
               new EntityList{ EntityId = 4, EntityName = "Entity 4"},
               new EntityList{ EntityId = 5, EntityName = "Entity 5"}
            };

            var settings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };

            return JsonConvert.SerializeObject(entities, Formatting.None, settings);
        }

И я отправляю его на представление через строчную модель

public ViewResult Index()
{
    return View("index","", GetEntityList());
}

В моем файле cshtml я пытаюсь присвоить модели свойство mvcData, которое является частью службы, которую я определяю

    app.factory("searchAttributes", function() {
        console.log(@Html.Raw(Model));
        return { mvcData:@Html.Raw(Model) };

    });

</script>

Этот тег скрипта находится внутри моего ng-приложения, поэтому его в области приложения, однако, когда я пытаюсь ссылаться, если из app.controller он отображается как неопределенный

app.controller('searchController', ['$scope', 'searchService', 'ngNotifier', '$log', '$timeout', 'searchAttributes', function ($scope, searchService, searchAttributes, ngNotifier, $log, $timeout) {

    var vm = this;
    //bootstraped data from MVC
    $scope.searchAttributes = searchAttributes.mvcData;

}]);

Глядя на модель, когда она возвращается в html, я вижу, что это действительный объект. Использование console.log(@Html.Raw(Model) Я вижу, что объекты возвращаются

 Object[0] entityId: 1   entityName: "Entity 1"
 Object[1] entityId: 2   entityName: "Entity 2"

Любые идеи, почему этот объект не поднимается в контроллере? Несмотря на то, что я определял его как зависимость, как будто ng-controller не обнаруживает/не загружает его.

спасибо в advacnce

Теги:
asp.net-mvc

1 ответ

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

Ваши зависимости не работают:

app.controller('searchController', ['$scope', 'searchService', 'ngNotifier', '$log', '$timeout', 'searchAttributes', function ($scope, searchService, searchAttributes, ngNotifier, $log, $timeout) {

должно быть

app.controller('searchController', ['$scope', 'searchService', 'ngNotifier', '$log', '$timeout', 'searchAttributes', function ($scope, searchService, ngNotifier, $log, $timeout, searchAttributes) {

Ваш текущий код будет означать ваш searchAttributes.mvcData; на самом деле ссылается на timeout.mvcData которая не определена.

  • 0
    Вот и все, чувак, какой недосмотр с моей стороны. Спасибо, что поймали это
  • 0
    @rlcrews Я делал это раньше и искал несколько часов, прежде чем понял, что это было так просто. Я чувствовал себя глупо, если не сказать больше.

Ещё вопросы

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