Bonjour,
Dans le cadre d'un site web en ASP MVC 3 et utilisant un mappage avec une base de données via Entity Framework, j'ai voulu faire un héritage de modèles pour factoriser du code, plus concrètement :
Un modèle Client avec les champs prénom et nom.
Un modèle Entreprise héritant de Client et ajoutant le champs SIRET.
Est-il possible d'avoir une unique vue fortement typée et pouvoir juste faire un test dans la vue pour afficher le champ "SIRET" ?
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 // Modèles : class Client { public string Prenom { get; set; } public string Nom { get; set; } } class Entreprise : Client { public string Siret{ get; set; } } ... // Controlleurs : class ClientController { public ActionResult EditClient(int id) { Client model; if (..) model = new Client(); else model = new Entreprise(); return View(model); } public void EditClient(Client c) { if (c is Entreprise) ... else ... } } // Vue : @model Client @Html.EditorFor(m => m.Prenom); @Html.EditorFor(m => m.Nom); @if (Model is Entreprise) { @Html.Partial("EntreprisePartial") } // Vue Partielle : @model Entreprise @Html.EditorFor(m => m.Siret)
Parce que pour le moment du côté controller dans la méthode EditClient(Client c), "c" est toujours du type Client.
Une idée de best-practice plutôt que de devoir faire une vue par type de client ?
Merci !
Partager