Bonjour, je travaille sur une appli MVC3.
Je souhaite enregistrer un objet "Equipe" qui ne contient qu'un ensemble de "Responsable" comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
    public class Team
    {
        public int TeamId { get; set; }
 
        //propriétés de naviagtion
        public virtual ICollection<Responsable> Responsables { get; set; }
    }
}
Ensuite, dans une vue, je demande à l'utilisateur de remplir un textarea grace à JQuery. Je recupere une chaine de caractere qui contient les noms des responsables separés par un espace. Dans mon controler, je split cette chaine de caractere et je fais une recherche dans la table "Responsable" sur chaque element ainsi séparé. Ensuite je parcours le résultat de la recherche puis j'ajoute le responsable à la propriété de navigabilité de ma classe :


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
 
[HttpPost]
        public ActionResult CreerTeam( String listeMembres)
        {
            Team team = new Team();
            //je decoupe la string qui est la concaténation des noms des membres de l'equipe séparés chacun par un espace. De cette maniere, je me retrouve avec un espace dans le tableau, dans le dernier indice
            String[] membres = listeMembres.Split(' ');
 
            var responsables = from s in db.Responsables
                          select s;
 
            foreach (string str in membres)
            {
                     responsables = responsables.Where(d => d.Nom.ToUpper().Contains(str.ToUpper()));
 
                    if (responsables != null)
                    {
                        foreach (var resp in responsables)
                        {
                            Response.Write(responsables.Count());
                                Response.Write(" "+resp.Nom );
                                if (resp != null)
                                {
                                    Response.Write("nom du responsable:" + resp.Nom + " mail: " + resp.Mail + " prenom: " + resp.Prenom);
                                    team.Responsables.Add(resp);
                                }
                                db.SaveChanges();
                        }
                    }
            }
 
            ViewBag.Responsables = db.Responsables.ToList();
            return View();
        }
Le Response.Write() avant l'Add en base me renvoi bien les propriétés de l'objet, mais j'obtient une erreur lors du Add(resp):

Object reference not set to an instance of an object.
Donc je ne comprends pas...on ne peux pas ajouter un element à une propriété de navigation de cette manière? erreur de conception?

Merci et bonne journée