J’ai remarqué avec ASP.NET MVC 2 que le classeur de modèle ne reconnaîtra pas “1” et “0” comme étant respectivement true
et false
. Est-il possible d’étendre le classeur de modèle globalement pour les reconnaître et les transformer en valeurs booléennes appropriées?
Merci!
Quelque chose parmi les lignes devrait faire le travail:
public class BBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); if (value != null) { if (value.AttemptedValue == "1") { return true; } else if (value.AttemptedValue == "0") { return false; } } return base.BindModel(controllerContext, bindingContext); } }
et vous inscrire dans Application_Start
:
ModelBinders.Binders.Add(typeof(bool), new BBinder());
Découvrez ce lien . Cela fonctionne apparemment dans MVC2.
Vous pouvez faire quelque chose comme (non testé):
public class BooleanModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { ValueProviderResult value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); // do checks here to parse boolean return (bool)value.AttemptedValue; } }
Ensuite, dans le fichier global.asax au démarrage de l’application, ajoutez:
ModelBinders.Binders.Add(typeof(bool), new BooleanModelBinder());