HTML input data met JSONResult opslaan in database table

Status
Niet open voor verdere reacties.

WinteE

Gebruiker
Lid geworden
20 dec 2006
Berichten
423
Al geruime tijd ben ik aan het proberen om met behulp van jQuery $.ajax() data weg te schrijven naar een SQL Server Database.
In de controller loop ik, als beginner met .NET helemaal vast.

De volgende code heb ik tot nu toe :

JSON object:

Code:
{"Title":"Test","Description":"aaaa","Duration":"15 minuten","Invitee":[{"Email":"E@g.com","Presence":"nodig"},{"Email":"H@g.com","Presence":"gewenst"}]}

Database tables:

Code:
CREATE TABLE [dbo].[Appointments] (
    [Id]          INT            IDENTITY (1, 1) NOT NULL,
    [UserId]      INT            NOT NULL,
    [Title]       NVARCHAR (100) NOT NULL,
    [Description] NTEXT          NULL,
    [Duration]    NVARCHAR (20)  NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[Invitees] (
    [Id]       INT            IDENTITY (1, 1) NOT NULL,
    [AppId]    INT            NOT NULL,
    [Email]    NVARCHAR (100) NOT NULL,
    [Presence] NVARCHAR (15)  NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

Model:

Code:
namespace ArrangeAppointments.Models
{
    public class Appointment
    {

        public int Id { get; set; }
        public int UserId { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string Duration { get; set; }
        public List<Invitee> AppInvitee { get; set; }
    }

    public class Invitee
    {
        public int Id { get; set; }
        public int AppId { get; set; }
        public string Email { get; set; }
        public string Presence { get; set; }
    }
}

jQuery:

Code:
    function SaveDataApp(JSONData) {
        var data = [];
        console.log("SaveDataApp: " + JSONData);
        $.ajax({
            url: '@Url.Action("NewAppSave", "App")',
            dataType: "json",
            type: "POST",
            accept: 'application/json; charset=utf-8',
            cache: false,
            data: JSONData,
            success: function (data) {
                if (data.success) {
                    alert("Met succes !");
                }
            },
            error: function (xhr) {
                alert(xhr.log);
            }
        });
    };


Controller:

Code:
        [HttpPost]
        public JsonResult NewAppSave(Appointment model, Invitee [] invitee)
        {
            if (ModelState.IsValid)
            {
                using (var db = new MainDbContext())
                {
                    var appointmentDB = db.Appointments.Create();
                    var inviteeDB = db.Invitees.Create();
                    appointmentDB.UserId = 1;
                    appointmentDB.Title = model.Title;
                    appointmentDB.Description = model.Description;
                    appointmentDB.Duration = model.Duration;
                    db.Appointments.Add(appointmentDB);
                    db.SaveChanges();
                }
            }
            else
            {
                ModelState.AddModelError("", "Something went wrong");
            }
            return Json(model);
        }

Ik krijg een error op de db.SaveChanges(), de entries kunnen niet opgeslagen worden.
Oorzaak hiervan lijkt te zijn dat het Appointment model het JSON object niet verwerkt, alle properties retourneren 0 (int) of null (string).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan