Проблема с узлом сохранения AngularJS Umbraco

У меня есть быстрый вопрос. Я создал собственный раскрывающийся HTML-элемент управления, который динамически захватывает «узлы» из базы данных. Я превратил это в тип данных Umbraco (v7), который можно использовать в качестве свойства Umbraco в разделе администратора.

К сожалению, когда пользователь выбирает один из элементов и сохраняет, он не сохраняет эту информацию должным образом. Я определил, что это связано с тем, что когда Umbraco пытается сохранить в БД, его NodeId пуст. Мне нужно заполнить это, прежде чем мы сохраним данные. К сожалению, я не нашел простого способа сделать это.

Может кто-то указать мне верное направление? Заполнение NodeId до того, как я отправлю модель в контроллер CS (который должен обновить базу данных SQL), должно работать... или возможно ли создать angularJS, который нажимает ДВА параметра и позволяет С# справиться с этим?

У кого-нибудь есть идеи?

Вот HTML-редактор:

    <select ng-controller="Dmns.DDLAllNodesController" data-ng-model="selectedOption">
        <option ng-repeat="gNode in galaxyNodes.data" value="{{gNode}}">
            {{gNode.KioskNodeId}} -- {{gNode.MachineName}} 
        </option>
    </select>

А вот AngularJS, где я хотел бы добавить идентификатор узла Umbraco в модель перед отправкой на C#.

     $scope.$on("formSubmitting", function () {
            $scope.selectedOption({
                Id: $routeParams.Id // This does not update properly
            });
            $scope.$apply();
            getAllNodesResource.save($scope.selectedOption); // Sends old data
        });

И вот модель, которую я возвращаю, если это поможет:

[Serializable]
    [DataContract]
    public class KioskNode
    {
        [DataMember]
        public int Id { get; set; }

        [DataMember]
        public int NodeId { get; set; }

        [DataMember]
        public int KioskNodeId { get; set; }

        [DataMember]
        public string MachineName { get; set; }
    }

person user305535    schedule 09.03.2015    source источник


Ответы (1)


Итак, я нашел причину, по которой он не заполнялся правильно. Я не десериализовал объект из JSON, что означает, что я не мог получить дочерние свойства.

Это исправило мою проблему:

var deJson = angular.fromJson(node);

        return $http.post("/umbraco/backoffice/api/DDLNodes/PostSave", {

            Id: 0,

            NodeId: id,

            KioskNodeId: deJson.KioskNodeId,

            MachineName: deJson.MachineName

        });

Это позволило мне передать переменные (обновленные), которые мне нужны, обратно в Backoffice, чтобы сохранить их в БД.

person user305535    schedule 10.03.2015