Bonjour,
Bonne année à tous ! La mienne commence bien, voila deux bon jours que j'erre sur google à la recherche du comment faire pour créer/valider des données à l'aide d'un Binder personnalisé, sans succé
Mon problème est simple, dans mon model, j'ai une propertie de type Patch, qui contient lui meme deux propertie de type int (X, Y), j'aimerai donc créer un PatchBinder pour valider et récupérer les données des champs input de mon formulaire "Patch.X" et "Patch.Y".
J'ai donc pour cela, ajouter mon PatchBinder pour tous les "objet de type Patch" dans mon fichier Global.asax.cs
Pas de problème jusque la, un coups d'oeil dans le débugger me confirme bien qu'un PatchBinder est utilisé.
J'ai aussi préciser que la valeur de X été à récupérer dans le champs "Patch.X", pareillement pour Y (enfin il me semble ...)
Mais ce qui est étrange est qu'en ajoutant un break point dans ma class PatchBinder, je ne break jamais dessus ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); ModelBinders.Binders[typeof(Patch)] = new PatchBinder() { X = "Patch.X", Y = "Patch.Y" }; // {X = "Patch.X", Y = "Patch.Y"} signifie bien que la valeur de X,Y sont a récupérer dans les champs Patch.X, Patch.Y, non ? }
Bon par désespoir de cause, j'ai essayé un peut tout et rien pour tenter de récupérer les valeurs de mes champs, rien n'a fonctionné, je n'ai pas vraiment de code potable à vous montrer, si ce n'est celui ci, qui je ne comprend pas, qui après l'ajout dans tout les cas d'une ModelError à mon ModelState, arrive à me passer ModelState.IsValid à true ....
En espérant que vous puissiez m'aider,
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 public class PatchBinder : DefaultModelBinder { public string X { get; set; } public string Y { get; set; } private int _x; private int _y; public object BinModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { if (bindingContext == null) throw new ArgumentNullException("bindingContext must be not null !!"); // Ici X vaut "Patch.X" // _x = int.Parse(????); // Ici Y vaut "Patch.Y" // _y = int.Parse(????); // Comment je puis récupérer leurs valeurs ? // Je tente d'ajouter une erreur pour rendre mon model invalid, mais cela ne fonctionne pas ! bindingContext.ModelState.AddModelError("Patch.X", "Mais euuuh !!"); return new Patch(_x, _y); } } }
Merci d'avance !![]()
Partager