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:
Database tables:
Model:
jQuery:
Controller:
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).
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).