Bonjour,
Je réalise actuellement une application en asp.NET MVC et je possède deux classes présentes sous la forme:
Les classes sont en fait (beaucoup) plus complexes que cela mais l'idée est avant tout de représenter leurs rapports. Dans la vue de création et d'édition de la classe Product, j'ai mis en place une liste de champs hidden qui contiennent les id des objets MasterCode liés au Product créé ou édité. Cette liste d'id est mise à jour de façon automatique suite à une série de requêtes ajax suivant l'encodage de l'utilisateur. Cependant lorsque je tente de faire le binding dans le controlleur, celui-ci ne prends effectivement en compte que l'id et me présente donc un ModelState invalide:
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 public class MasterCode{ [Key] public int id { get; set; } [Required] public string libelle { get; set; } public virtual IList<Product> products { get; set; } } public class Product{ [Key] public int id { get; set; } [Required] public string name { get; set; } public virtual IList<MasterCode> masterCodes { get; set; } }
Je ne peux pas ajouter les autres champs de MasterCode puisque, d'une part, ceux ci sont parfois extrêmement massifs (plus d'une page de texte) et ensuite parce que seuls les administrateurs ont le droit d'effectuer des modifications sur ses champs (et je ne veux pas qu'un petit malin s'y connaissant un peu en html aille y mettre son grain de sel).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "id,name,masterCode")] Product product) { /*Faux puisque les mastercode de product sont vides en dehors de leur id*/ if (ModelState.IsValid) { /*...*/ } return View(product); }
En clair, comment puis-je m'arranger pour sélectionner un MasterCode mais sans pouvoir le Modifier.
J'espère avoir été clair et en tous cas un grand merci d'avance à tous...
Partager