Bonjour.
Je suis entrain de modifier le controleur par défaut d'une appli MVC pour inter réagir avec mes tables aussi (je stocke plus d'informations)....

Mais voila j'ai une erreur que je n'arrive pas à bien gérer...

Dans mon controleur:

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
53
54
55
56
57
58
 
/Account/Register
public ActionResult Register()
        {
            IDepartmentRepository depts = new DepartmentRepository();
            IEnumerable<SelectListItem> departments = depts.GetAllDepartments()
                            .Select(d => new SelectListItem
                            {
                                Value = d.dept_id.ToString(),
                                Text = d.dept_name
                            });
 
            IProgrammeRepository progs = new ProgrammeRepository();
            IEnumerable<SelectListItem> programmes = progs.GetAllProgrammes()
                            .Select(p => new SelectListItem
                            {
                                Value = p.prog_id.ToString(),
                                Text = p.prog_name
                            });
 
            ViewData["user_type"] = new SelectList(new[]
                                                    {
                                                        new { ID = "stud", Name = "Student" },
                                                        new { ID = "prof", Name = "Professor" },
                                                    }, "ID","Name", "stud"
                                                 );
 
            ViewData["dept_id"] = departments;
            ViewData["prog_id"] = programmes;
 
            ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
            return View();
        }
[HttpPost]
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Try registering user
                MembershipCreateStatus createStatus = 
                    MembershipService.CreateUser(model.UserName, model.Password, model.Email, model.FirstName,
                        model.LastName,model.RollNo, model.PhoneNo, model.DeptId, model.ProgId, model.Type);
 
                if (createStatus == MembershipCreateStatus.Success)
                {
                    FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
                }
            }
 
            // if we got here, something failed so we reload the form
            ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
            return View(model);
        }
Dans ma vue j'ai ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<div class="editor-label">
                <%: Html.LabelFor(model => model.Type) %>
            </div>
 
            <div class="editor-field">
                <%: Html.DropDownListFor(model => model.Type, ViewData["user_type"] as SelectList ) %>
            </div>
La vue s'affiche correctement mais quand je veux enregistrer un utilisateur, j'ai l'erreur suivante:

L'élément ViewData qui a la clé 'Type' est de type 'System.String', mais doit être de type 'IEnumerable<SelectListItem>'.
Je comprends bien l'erreur mais ne vois pas comment la résoudre...(je suis newbie en asp.net mvc)...