Personalizzato Modello legante non sparare
-
24-09-2019 - |
Domanda
Questo è il mio modello personalizzato legante. Ho il mio set al punto di interruzione BindModel ma non viene licenziato con questa azione di controllo:
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;
}
La mia iscrizione:
// provato entrambe queste due linee
ModelBinders.Binders[typeof(TabGroup)] = new BaseContentObjectCommonPropertiesBinder();
ModelBinders.Binders.Add(typeof(TabGroup), new BaseContentObjectCommonPropertiesBinder());
Soluzione
E 'perché si è utilizzato parola chiave "nuovo" sul metodo di BindModel. I "nuovi" mezzi che il metodo non parteciperà invocazione virtuale (più sul polimorfismo si può leggere qui .
Sostituire "nuova" con "override" e dovrebbe funzionare bene.
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
//your stuff
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow