Flícola de modelo personalizado não disparando
-
24-09-2019 - |
Pergunta
Este é o meu fichário personalizado. Eu tenho meu ponto de interrupção definido no BindModel, mas não é demitido com esta ação do controlador:
public ActionResult Create(TabGroup tabGroup)
...
public class BaseContentObjectCommonPropertiesBinder : DefaultModelBinder
{
public new object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
if (bindingContext == null)
{
throw new ArgumentNullException("bindingContext");
}
BaseContentObject obj = (BaseContentObject)base.BindModel(controllerContext, bindingContext);
obj.Modified = DateTime.Now;
obj.Created = DateTime.Now;
obj.ModifiedBy = obj.CreatedBy = controllerContext.HttpContext.User.Identity.Name;
return obj;
}
Meu registro:
// tentou as duas duas linhas
ModelBinders.Binders[typeof(TabGroup)] = new BaseContentObjectCommonPropertiesBinder();
ModelBinders.Binders.Add(typeof(TabGroup), new BaseContentObjectCommonPropertiesBinder());
Solução
É porque você usou a palavra -chave "nova" no método BindModel. O "novo" significa que o método não participará de invocação virtual (mais sobre o polimorfismo que você pode ler aqui.
Substitua "Novo" por "Substitua" e deve funcionar bem.
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
//your stuff
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow