public async Task <IActionResult> Create(PrerequisNiveauxCreateViewModel viewModel) { ViewData["erreur"] = ""; if (AlreadyExists(viewModel.Prerequis, viewModel.Niveau)) { ViewData["erreur"] = "Element déjà existant"; ModelState.AddModelError("Intitule", "element existant"); } if (ModelState.IsValid) { var niveau = await _context.Niveau .FirstOrDefaultAsync(m => m.Intitule == viewModel.Niveau.Intitule); var prerequis = await _context.Prerequis .FirstOrDefaultAsync(m => m.Intitule == viewModel.Prerequis.Intitule); var PrerequisNiveauAjoute = new PrerequisNiveau { Niveau = niveau, Prerequis = prerequis }; _context.Add(PrerequisNiveauAjoute); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //Permet d'afficher de nouveau les noms des compétences et prérequis dans les SelectList en cas d'erreur else { //récupération des intitulés de tous les prérequis IQueryable <string> PrerequisQuery = from x in _context.Prerequis orderby x.Intitule select x.Intitule; // récupération des intitulés de tous les niveaaux IQueryable <string> NiveauQuery = from x in _context.Niveau orderby x.Intitule select x.Intitule; viewModel.ListePrerequis = new SelectList(await PrerequisQuery.Distinct().ToListAsync()); viewModel.ListeNiveaux = new SelectList(await NiveauQuery.Distinct().ToListAsync()); } return(View(viewModel)); }
// GET: PrerequisNiveaux/Create public async Task <IActionResult> Create() { //récupération des intitulés de tous les domaines IQueryable <string> PrerequisQuery = from x in _context.Prerequis orderby x.Intitule select x.Intitule; // récupération des intitulés de tous les domaines IQueryable <string> NiveauQuery = from x in _context.Niveau orderby x.Intitule select x.Intitule; //Envoie de deux listes de sélection vers la vue Create Post var viewModel = new PrerequisNiveauxCreateViewModel { ListePrerequis = new SelectList(await PrerequisQuery.Distinct().ToListAsync()), ListeNiveaux = new SelectList(await NiveauQuery.Distinct().ToListAsync()), }; ViewData["erreur"] = ""; return(View(viewModel)); }