Bonjour,
Voila je voudrais mettre en place une liste déroulante contenant les catégories...
Voici mon model :
Mon controlleurs :
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
20 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; namespace _03082017_XXX.Models { public class Article { public virtual int ArticleId { get; set; } [Required(ErrorMessage = "La catégorie est obligatoire")] public virtual Category Categorie { get; set; } public virtual ApplicationUser AddBy { get; set; } } }
Et ma vue :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using _03082017_XXX.Models; namespace _03082017_XXX.Controllers { public class ArticlesController : Controller { private ApplicationDbContext db = new ApplicationDbContext(); // GET: Articles public ActionResult Index() { return View(db.Articles.ToList()); } // GET: Articles/Create public ActionResult Create() { var list = db.Categories.ToList() .Select(r => new SelectListItem { Value = r.CategoryId.ToString(), Text = r.CategoryName }); ViewBag.categorie = list; return View(); } // POST: Articles/Create // Afin de déjouer les attaques par sur-validation, activez les propriétés spécifiques que vous voulez lier. Pour // plus de détails, voir https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ArticleId")] Article article) { if (ModelState.IsValid) { db.Articles.Add(article); db.SaveChanges(); return RedirectToAction("Index"); } return View(article); } } }
Voila pour les partis code, je l'ai réduit en enlevant les autres champs, qui pour l'instant ne pose pas de problème...
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 @model _03082017_xxx.Models.Article @{ ViewBag.Title = "Create"; } <h2>Create</h2> @using (Html.BeginForm("Create", "Articles", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Article</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Categorie, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownListFor(m => m.Categorie, (IEnumerable<SelectListItem>)ViewBag.categorie, new { htmlAttributes = new { @class = "form-control" } }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </div> </div> </div> } <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
Donc quand je clique sur le submit, j'ai mon erreur ErrorMessage = "La catégorie est obligatoire" qui revient... Pourtant ma liste déroulante est rempli avec ce quel contient dans ma table...
Quelqu'un pourrait m'orienter?
Merci
Partager