Pass json/javascript-Daten/Objekte c# - Funktion mit ajax

Ich bin mit FullCalendar (http://arshaw.com/fullcalendar/) und ich brauche Hilfe mit übergabe von Daten mittels json an eine c# - Funktion in der code-behind-Seite meiner ASP.net Seite.

Ich bin mit json-Daten laden, wie also in meiner FullCalendar web-Anwendung:

Code hinter:

    [WebMethod]
    public static List<Event> GetEvents()
    {
        List<Event> events = new List<Event>();
        events.Add(new Event()
        {
            EventID = 1,
            EventName = "EventName 1",
            StartDate = DateTime.Now.ToString("MM-dd-yyyy"),
            EndDate = DateTime.Now.AddDays(2).ToString("MM-dd-yyyy"),
            EventColor = "red"
        });
        events.Add(new Event()
        {
            EventID = 2,
            EventName = "EventName 2",
            StartDate = DateTime.Now.AddDays(4).ToString("MM-dd-yyyy"),
            EndDate = DateTime.Now.AddDays(5).ToString("MM-dd-yyyy"),
            EventColor = "green"
        });

        return events;
    }

asp.x x x Seite:

     events: function(start, end, callback)
            {
                $.ajax(
                {
                    type: 'POST',
                    contentType: 'application/json',
                    data: "{}",
                    dataType: 'json',
                    url: "Calendar.aspx/GetEvents",
                    cache: false,
                    success: function (response) {

                        var events = $.map(response.d, function (item, i) {
                            var event   = new Object();
                            event.id    = item.EventID;
                            event.start = new Date(item.StartDate);
                            event.end   = new Date(item.EndDate);
                            event.title = item.EventName;
                            event.color = item.EventColor;
                            return event;
                         })
                         callback(events);
                    },

                    error: function (err) {
                       alert('Error');
                    }
                });
             },

Dies gut funktioniert. Jetzt möchte ich das speichern von Daten durch aufrufen einer Funktion und übergabe der Daten. Hier ist, was ich bisher getan habe:

Code hinter:

    [WebMethod]
    public static bool SaveEvents(List<Event> events)
    {
        //iterate through the events and save to database

        return true;
    }

asp.x x x Seite

    function save() {
        var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');

        var events = $.map(eventsFromCalendar, function (item, i) {
            var event   = new Object();
            event.id    = item.id;
            event.start = item.start;
            event.end   = item.end;
            event.title = item.title;
            event.color = item.color;
            return event;
        });

        $.ajax(
        {
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(events),     **<-- I have to pass data here but how???**
            dataType: 'json',
            url: "Calendar.aspx/SaveEvents",
            cache: false,
            success: function (response) {
                alert('Events saved successfully');
            },

            error: function (err) {
                alert('Error Saving Events');
            }
        });
        return false;            
    }

Den oben genannten ajax-post ist, wo ich Hilfe benötige. Die variable Ereignisse contais alle FullCalendar event-info.
Wie übertrage ich die Daten 'events' um die Funktion 'SaveEvents'?
Ändern kann ich die SaveEvents Signatur, wenn es sein muss.

BEARBEITEN
Wenn ich meine c# - Funktion um ein array zu verwenden, wie s0:

    [WebMethod]
    public static bool SaveEvents(Event[] newEvents)
    {

        return true;
    }

Auf und übergibt die folgenden Daten durch:

    data: JSON.stringify({ newEvents: events }),

Dann die Funktion 'SaveEvents' aufgerufen wird, mit einem array der Größe 4, aber die Daten alle Werte null sind, warum ist das so?

Dank

InformationsquelleAutor Harry Boy | 2014-04-10

Schreibe einen Kommentar