Laden...

Collection wird für Deserialisierung eines Arrays nicht unterstützt.

Erstellt von tequila slammer vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.858 Views
T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren
Collection wird für Deserialisierung eines Arrays nicht unterstützt.

Hallo Forum,

ich spiele gerade mit AJAX rum und versuche eine Objekt an einen WebService zu übergeben.

Die Klasse Parent:


public class Parent
{
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime DayOfBirth { get; set; }
        public ChildrenCollection Children { get; set; }
}

Die Klasse Child:


public class Child
{
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime DayOfBirth { get; set; }
}

Die ChildrenCollection leite ich von System.Collections.Generic.ICollection<Child> ab und ist als Serializable markiert.

Als Antwort erhalte ich vom Service folgende Fehlermeldung:
"Der Typ &quot;TestWebService.ChildrenCollection&quot; wird für die Deserialisierung eines Arrays nicht unterstützt.

Wie könnte ich denn sonst mein Objekt per Ajax übermitteln ohne gleich meine Grundstruktur zu verändern?

1.433 Beiträge seit 2006
vor 13 Jahren

Per JSON

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

ja wird mit JSON gemacht.

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

Anbei mal mein JavaScript Code


$(document).ready(function() {

            $("#submit").click(function(e) {
                e.preventDefault();

                var Person = new Object();
                Person.FirstName = "Firstname";
                Person.LastName = "Lastname";
                Person.DayOfBirth = new Date(1982, 06, 08);
                Person.Children = null;

                var Person1 = new Object();
                Person1.FirstName = "ChildFirstname";
                Person1.LastName = "ChildLastname";
                Person1.DayOfBirth = new Date(2009, 12, 20);

                Person.Children = new Array(Person1);

                createPerson(Person);
            });

            function createPerson(personItem) {

                var parameter = "{newPerson: " + JSON.stringify(personItem) + "}"; ;

                $.ajax({
                    type: "POST",
                    url: "http://localhost:62588/Service1.asmx/CreatePerson",
                    data: parameter,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        alert("erfolgreich");
                    },
                    error: function(msg) {
                        alert("nicht erfolgreich");
                    }
                });
            }
});

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

Ich habe mal ein wenig mit den Collection Interfaces experimentiert. Implenentiere ich die ChildrenCollection als Ableitung von IList funktioniert die Übertragung. Ich finde allerdings, dass ich mit dieser Implementierung erheblich an Vorteilen gegenüber IList<T> verliere.