Мне пришлось положиться на все связанные данные.Это было решение, которое я в конечном итоге использовал.размещение кода в OnModelUpdated позволило мне положиться на другие установленные свойства.
public class AuditedEntityModelBinder : DefaultModelBinder
{
protected override void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext.ModelType.IsSubclassOfGeneric(typeof(AuditedEntity<>)))
{
string name = controllerContext.HttpContext.User.Identity.Name;
if(!name.IsNullOrEmpty())
{
if((bool) bindingContext.ModelType.GetProperty("IsNew").GetValue(bindingContext.Model, null))
{
bindingContext.ModelType.GetProperty("CreatedBy").SetValue(bindingContext.Model, name, null);
bindingContext.ModelType.GetProperty("Created").SetValue(bindingContext.Model, DateTime.Now, null);
}
else
{
bindingContext.ModelType.GetProperty("ModifiedBy").SetValue(bindingContext.Model, name, null);
bindingContext.ModelType.GetProperty("Modified").SetValue(bindingContext.Model, DateTime.Now, null);
}
}
}
base.OnModelUpdated(controllerContext, bindingContext);
}
}