J'ai une forme qui me renvoie une liste d'objets FlatSessieLINQ pour mettre à jour une liste <T> des objets à DB
à mon avis de modifier modifier un peu de FlatSessie et obtenir les retournés à ma méthode Post dans cette liste objet.
Dans mon DB j'ai Sessies, que je Automapper carte à l'aide de son FlatSessie et le dos
maintenant je ne peux pas obtenir LINQ pour faire la mise à jour à la DB pour moi.
le code:
[HttpPost]
public ActionResult Sessies(int id, int? modID, int? projID, string schooljaarparam, List<FlatSessie> sl) {
if (ModelState.IsValid) {
foreach (FlatSessie s in sl) { //i run over all FlatSessies which i get
Models.Sessies ses = Mapper.Map<FlatSessie, Sessies>(s); // i map them to the Sessies object
List<Sessies> origReeks = _db.Sessies.Where(p => p.Ses_ID == ses.Ses_ID).ToList(); //i get the original Session by ID. if there is a Session with that ID, if not (the ID will be 0) i do an Insert. if there is i want to do an Update.
if (origReeks.Count > 0) {
//it's an update
UpdateModel(origReeks.First(); //doesnt work
//_db.Sessies.Attach(ses, origReeks.First()); //doesnt work, gives me an error on used ID...
_db.SubmitChanges();
} else {
//no sessies yet, add them, this works.
_db.Sessies.InsertOnSubmit(ses);
_db.SubmitChanges();
}
}
TempData["okmsg"] = "De sessies zijn opgeslagen";
return RedirectToAction("Index");
}
//if not valid, i return the viewdata which i need.
Module m = _db.Modules.First(md => md.Mod_ID == modID.Value);
int antses = m.Mod_AantalSessies.Value;
List<List<SelectListItem>> lpllst = new List<List<SelectListItem>>(antses);
for (int i = 0; i < antses; i++) {
lpllst.Add(MvcApplication.lesplaatsList(schooljaarparam, -1));
}
ViewData["lesplist"] = lpllst;
ViewData["lglist"] = MvcApplication.lesgeverList();
return View(sl);
}
merci pour votre réponse, je vais essayer de le faire fonctionner. J'ai aussi un autre problème avec le même code, mais à son avis. vous pourriez vouloir le vérifier ici: http://stackoverflow.com/questions/2454319/model-binding-form-to-a-list-using-dropdown-binding-failing-1-way-for-dropdown il pourrait plus clair comment résoudre ce problème aussi de cette façon :) – Stefanvds
AWESOME. Ça marche! mon updatemodel a juste dû être changé en: UpdateModel (origReeks.First(), "[" + counter + "]"); avec compteur étant un int incrémenté après chaque boucle. parce que c'est ainsi que le formcollection entre en jeu. MERCI !! – Stefanvds