Probleme pour afficher un objet dans la vue ?
Bonjour,
Voila mon objet possède une variable de type String et un selectListItem composé des différents rôles possible.
J'aimerai afficher le pseudo de chaque personne ainsi que le selectListItem dans un dropdownlistbox...
J'ai beau essayer dans tous les sens mais je n'y arrive pas :/.
Voici ma class Modele Utilisateur:
Code:
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
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace ASP.Models.Utilisateur
{
public class Utilisateur
{
[Required(ErrorMessage = "Le pseudo est obligatoire")]
[Display(Name = "Pseudo")]
public String Pseudo { get; set; }
[Display(Name = "Roles")]
public IList<SelectListItem> roles = new List<SelectListItem>();
public IList<SelectListItem> Roles
{
get { return roles; }
set { roles = value; }
}
}
} |
Quand la personne se connecte sur la page je vais recuperer dans la base de donnée les pseudo et roles, je mets ensuite les rôles dans une liste.
Voici le controleur:
Code:
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
| public ActionResult Modifier()
{
Connection connection = new Connection();
connection.creationConnexion();
DbDataReader reader = connection.getBDAllPseudoRole();
List<Utilisateur> utilisateurs=new List<Utilisateur>();
Utilisateur utilisateur = null; ;
if (reader.HasRows)//enregistrement existant
{
while (reader.Read())
{
//Recuperer si une personne existe déjà ou pas dans la liste
Boolean flag = false;
foreach (Utilisateur utilisateurTemp in utilisateurs)
{
if (utilisateurTemp.Pseudo.Equals(Convert.ToString(reader[0])))
{
utilisateur = utilisateurTemp;
flag = true;
}
}
if(flag==false)
utilisateur = new Utilisateur();
if (reader.GetValue(1) == DBNull.Value)//si la colonne 1 vaut null; cad la colonne des rôles
{
utilisateur.Pseudo = Convert.ToString(reader[0]);
}
else
{
utilisateur.Pseudo = Convert.ToString(reader[0]);
SelectListItem item = new SelectListItem();
item.Text = Convert.ToString(reader[1]);
item.Value = Convert.ToString(reader[1]);
utilisateur.Roles.Add(item);
}
utilisateurs.Add(utilisateur);
}
}
return View(utilisateurs);
} |
Et voici ma vue
Code:
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
| @model ASP.Models.Utilisateur.Utilisateur
@{
ViewBag.Title = "Modifier";
}
<h2>Modifier</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Utilisateur</legend>
<div class="editor-label">
@Html.LabelFor(utilisateur => utilisateur.Pseudo)
</div>
<div class="editor-field">
@Html.EditorFor(utilisateur => utilisateur.Pseudo)
@Html.ValidationMessageFor(utilisateur => utilisateur.Pseudo)
</div>
<div class="editor-label">
@Html.DropDownList("roles", utilisateur => utilisateur.Roles)
</div>
<input type="submit" value="Connexion"/>
</fieldset>
} |
J'ai une sale erreur au niveau du dropdownList et je ne trouve pas de solution :calim2:.
Merci d'avance pour votre aide:ccool:
Cordialement,
Zoners