2010-04-06 4 views
1

이것은 내 사용자 지정 모델 바인더입니다.사용자 지정 모델 바인더가 실행되지 않음

//이 두 라인

모두 시도 :

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; 
    } 

내 등록 ...

public ActionResult Create(TabGroup tabGroup) 

: 내 중단 점 BindModel에서 설정하지만,이 컨트롤러 액션과 해고하지 않습니다

ModelBinders.Binders[typeof(TabGroup)] = new BaseContentObjectCommonPropertiesBinder(); 
ModelBinders.Binders.Add(typeof(TabGroup), new BaseContentObjectCommonPropertiesBinder()); 

답변

7

BindModel 메서드에서 "new"키워드를 사용했기 때문입니다. "새"는 방법을 사용 here을 읽을 수있는 가상 호출 다형성에 대한 (더에 참여되지 않습니다.

"재정의"와 "새로운"교체하고 그것을 잘 작동합니다.

public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
{ 
    //your stuff 
}