Salut
Quand j'essaie d'ajouter une déclaration d'un deuxième modèle dans ma page .aspx j’obtiens l'erreur suivante:
pouvez-vous m'aider!Only one 'model' statement is allowed in a file
merci,
pacifiquement.
Salut
Quand j'essaie d'ajouter une déclaration d'un deuxième modèle dans ma page .aspx j’obtiens l'erreur suivante:
pouvez-vous m'aider!Only one 'model' statement is allowed in a file
merci,
pacifiquement.
Bah le message est assez clair, non ? On ne peut pas déclarer plusieurs modèles dans la même page, c'est tout...
La directive @model crée une vue fortement typée, pour un type de modèle donné : ça indique le type de la propriété Model. Or cette propriété ne peut pas avoir 2 types différents...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
bonjour,
Je suppose que tu parle de vu fortement typé. Si c'est le cas je pense que c'est normal parce que d'après moi on ne peut pas faire "hériter" une vue fortement typée de plusieurs modèle. Tu devrais créer un ModelView qui correspond aux différents champs dont tu as besoin dans ta vue et faire "hériter" ta vue de ce ModelView.
PS: désolé je répète un peu ce que vient de dire Tomlev, je n'avais pas vu qu'il avait déjà répondu au post
cordialement,
Salut,
mais si jamais j'ai plusieurs objets à utiliser et encore un IEnumerable comment peut-on y arriver !!
merci.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Salut
je ne suis pas arrivée à le faire
y a pas un exemple sur internet ?!
merci.
Pas arrivé à faire quoi ? A créer une classe ?! Si c'est ça il faudrait sérieusement penser à te replonger dans un cours de C#
En gros, si tu as des objets X et Y (de types Titi et Toto) que tu veux utiliser comme modèles, tu crées une classe comme ça :
Pour le passer à la vue, tu fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class MonModele { public Titi X { get; set; } public Toto Y { get; set; } }
Et dans la vue, tu mets MonModele comme modèle...
Code : Sélectionner tout - Visualiser dans une fenêtre à part return View(new MonModele { X = x, Y = y });
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Plus de détail avec du code pourrait aider à savoir pourquoi ça ne marche pas. Parce que la je suis en formation pour passer mon brevet de sorcellerie mais j'ai pas encore appris à lire dans une boule de cristal
cordialement
y a pas un exemple sur internet comme ça je peux le suivre et savoir où je me trompe !
Va voir de ce coté la: http://weblogs.asp.net/scottgu/archi...alidation.aspx
Le post inclut la notion de validation mais c'est juste un plus
cordialement
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
merci ! mais en fait ce que je veux c'est utiliser plusieurs modèles dans la même vue même
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
en fait j'ai créé une classe :
puis dans ma vue j'ai ajouté la ligne suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 namespace MVC3ApplicationPersonneAdresses.Models { public class RechercheEtudiant { public Activite Activites { get; set; } public IEnumerable<Etudiant> Etudiants { get; set; } } }
et dans mon controlleur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part @model MVC3ApplicationPersonneAdresses.Models.RechercheEtudiant
cette action ne contient pas le deuxième objet puisque même au niveaux Vue ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public ViewResult Index(string recherche) { var etudiants = db.Etudiants.Include(e => e.Niveau); if (!String.IsNullOrEmpty(recherche)) { etudiants = etudiants.Where(e => e.Nom.ToUpper().Contains(recherche.ToUpper())); } return View(etudiants.ToList()); }
Merci
ma page index contient le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @using (Html.BeginForm()) { <div> Recherche par Nom ou Prénom: @Html.TextBox("recherche") <div class="editor-label"> @Html.LabelFor(model => model.NiveauID, "Niveau") </div> <div class="editor-field"> @Html.DropDownList("NiveauID", String.Empty) @Html.ValidationMessageFor(model => model.NiveauID) </div> <input type="submit" value="Rechercher" /> </div> }mes classes sont: Activite, Etudiant, Niveau:
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 <table class="tablesorter"> <thead> <tr> <th class="thcursseur"> Nom </th> <th class="thcursseur"> Prenom </th> <th class="thcursseur"> Niveau </th> <th class="thcursseur"> Liste activités </th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td class="clwidthtd"> @Html.ActionLink("Editer", "Edit", new { id = item.EtudiantID }) | @Html.ActionLink("Spprimer", "Delete", new { id = item.EtudiantID }) | @Html.DisplayFor(modelItem => item.Nom) </td> <td> @Html.DisplayFor(modelItem => item.Prenom) </td> <td> @Html.DisplayFor(modelItem => item.Niveau.Libelle) </td> <td> @{ foreach (var activite in item.Activites) { @activite.Libelle <br /> } } </td> </tr> } </tbody> </table>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class Activite { public int ActiviteID { get; set; } [Required(ErrorMessage = "Veuillez saisir l'ctivité de l'étudiant")] [Display(Name = "Activité de l'étudiant")] [MaxLength(50)] public string Libelle { get; set; } public virtual ICollection<Etudiant> Etudiants { get; set; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class Etudiant { public int EtudiantID { get; set; } [Required(ErrorMessage = "Veuillez saisir le nom de l'étudiant")] public string Nom { get; set; } [Required(ErrorMessage = "Veuillez saisir le prénom de l'étudiant")] public string Prenom { get; set; } [Required(ErrorMessage = "Veuillez selectionnez le niveau d'étude")] public int NiveauID { get; set; } public virtual Niveau Niveau { get; set; } public virtual ICollection<Activite> Activites { get; set; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class Niveau { public int NiveauID { get; set; } public string Libelle { get; set; } public virtual ICollection<Etudiant> Etudiants { get; set; } }
Je ne comprends pas très bien le sens de ta phrase... Ta vue attend un objet de type RechercheEtudiant, mais tu lui passes une liste d'étudiants, donc forcément ça ne peut pas marcher...
Tu veux afficher quoi au juste sur ta vue ? Une liste d'étudiants, avec des filtres par niveau et par nom ?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Salut,
en fait si j'enlève cette partie de la vue
et que je fais appelle seulement à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <div class="editor-label"> @Html.LabelFor(model => model.NiveauID, "Niveau") </div> <div class="editor-field"> @Html.DropDownList("NiveauID", String.Empty) @Html.ValidationMessageFor(model => model.NiveauID) </div>ceci marche et ça donne la liste des étudiants avec une petite recherche par nom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part @model IEnumerable<MVC3ApplicationPersonneAdresses.Models.Etudiant>
sinon ce que je veux c'est intégrer une recherche multicritère et là je dois utiliser d'autres objets et c'est là où je me bloque.
Merci,
pacifiquement.
OK... revenons un peu en arrière.
En fait, il me semble que les critères de recherche ne font pas vraiment partie du modèle. Ce sont juste des paramètres que tu vas passer à ton contrôleur pour savoir quoi chercher. Donc a priori tu n'as pas besoin de les mettre dans le modèle, c'est juste des paramètres de ton action de contrôleur, non ?
Bon, je dis ça, je ne suis pas un expert de MVC, loin de là, donc c'est peut-être une bêtise...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Salut,
en fait dans mon cas je dois charger les critères de recherche de la base de données, car si jamais j'ajoute des données dans la BD je n'aurai pas besoin de les ajouter manuellement au niveau du volet recherche dans la vue.
Merci.
Partager