J'ai cherché un moyen approprié de marquer une propriété pour qu'elle ne soit PAS modifiée lors de la mise à jour d'un modèle dans MVC.
Par exemple, prenons ce petit modèle :
class Model
{
[Key]
public Guid Id {get; set;}
public Guid Token {get; set;}
//... lots of properties here ...
}
alors la méthode d'édition que MVC crée ressemble à ceci :
[HttpPost]
public ActionResult Edit(Model model)
{
if (ModelState.IsValid)
{
db.Entry(model).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
Maintenant, si ma vue ne contient pas le jeton, il sera annulé par cette modification.
Je cherche quelque chose comme ça :
db.Entry(model).State = EntityState.Modified;
db.Entry(model).Property(x => x.Token).State = PropertyState.Unmodified;
db.SaveChanges();
La meilleure solution que j'ai trouvée jusqu'à présent est d'être inclusif et de définir à la main toutes les propriétés que je veux inclure, mais je ne veux vraiment dire que celles qui doivent être exclues.