Проблем с AngularJS Umbraco Save Node

Имам един бърз въпрос. Създадох персонализирана падаща HTML контрола, която динамично грабва „възли“ от база данни. Превърнах това в тип данни Umbraco (v7), който може да се използва като свойство на Umbraco в секцията за администриране.

За съжаление, когато потребителят избере един от елементите и го запази, той не съхранява правилно тази информация. Установих, че това е така, защото когато Umbraco се опитва да запази в DB, ​​NodeId е празен. Трябва да попълня това, преди да запазим данните. За съжаление не намерих лесен начин да направя това.

Може ли някой да ме насочи в правилната посока? Попълването на NodeId, преди да насоча модела към CS Controller (който трябва да актуализира SQL DB) трябва да работи... или е възможно да се направи angularJS, който избутва ДВА параметъра и оставя C# да се справи с това?

Някой има ли идеи?

Ето 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, за да ги запазя в DB.

person user305535    schedule 10.03.2015