So I have one custom model binder that inherits from DefaultModelBinder, where I am overriding the BindProperty() method to handle a type of field we’ve created.
I also have one controller that we’d like to override BindModel() on, since we’re handling an object in session for multiple views with that controller.
So I have CustomModelBinder : DefaultModelBinder, and then in the class where we override BindModel() i have that inheriting from CustomModelBinder. SpecialModelBinder: CustomModelBinder
But I have set a breakpoint in our override of BindProperty() in CustomModelBinder, and this never gets hit when using the controller that is also overriding BindModel().
Can I not inherit like this? What’s happening here?
Thank You!
edit:
in global.asax:
ModelBinders.Binders.Add(typeof(ClassA), new SpecialModelBinder());
ModelBinders.Binders.Add(typeof(ClassB), new CustomModelBinder());
ModelBinders.Binders.Add(typeof(ClassC), new CustomModelBinder());
ModelBinders.Binders.Add(typeof(ClassD), new CustomModelBinder());
public class CustomModelBinder : DefaultModelBinder
{
// this will be hit in controllers that handle classes B, C, and D, but will not be hit in controller that handles ClassA
protected override void BindProperty(...){}
}
public class SpecialModelBinder : CustomModelBinder
{
// this will be hit when working in controller that handles ClassA only
public override object BindModel(...){}
}
I recreated the scenario you described in an empty MVC application, and wasn’t able to replicate the situation you describe here. I had no problem subclassing
SpecialModelBinderfromCustomModelBinderand hitting both breakpoints in all classes. Is there any other informaiton you can provide that might illuminate a solution? As you describe it here, there should be no issue with hitting both breakpoints forClassAand only theBindPropertymethod for B, C and D.Scenarios I tried:
1) Edit
ClassA. Result:BindModel()onSpecialModelBindercalled andBindProperty()onCustomModelBindercalled for each property on the class;2) Edit
ClassB(or C or D). Result:BindProperty()onCustomModelBindercalled for each property on the class.Is there anything else in your
Application_Start()method inGlobal.asax, other than the Area and Route registration calls?