Bonjour tout le monde,
J'ai un formulaire de saisie avec une liste déroulante pour saisir une clé étrangère : en clair choisir une catégorie.
Je prends soin d'ajouter dans la liste déroulante la catégorie de clef 0, "Veuillez choisir une catégorie".
Mais, si l'utilisateur laisse ça comme ça en validant la saisie, ça lui crée un objet sans catégorie.
Que devrais-je faire ?
J'ai l'impression que je devrais gérer ça à plusieurs niveaux :
- comment en Code First indiquer une clef étrangère obligatoire ?
- jQuery dispose-t-il d'une validation pour vérifier qu'une valeur a été saisie dans la liste ? Une valeur supérieure à 0, donc.
- du côté serveur c'est facile à faire. Mais y a-t-il plus élégant ?
J'oubliais, j'ai essayé ça https://jqueryvalidation.org/min-method/ avec l'identifiant de la liste déroulante, ça n'a rien arrêté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "IdPlat,IntitulePlat,prix,CategorieId")] Plat plat) { if (ModelState.IsValid && plat.CategorieId > 0) { Categorie c = (Categorie)(from c in db.Categories select c).Where(c => c.IdCategorie == plat.CategorieId); plat.categorie = c; db.Plats.Add(plat); db.SaveChanges(); return RedirectToAction("Index"); } List<SelectListItem> ListCategories = (List<SelectListItem>)GetCategories().ToList(); ListCategories.Insert(0, new SelectListItem { Value = "0", Text = "Veuillez sélectionner une catégorie" }); SelectList SelectCategories = new SelectList(ListCategories, "Value", "Text"); ViewBag.CategorieId = SelectCategories; return View(plat); }
Partager