2009-12-09 2 views
1

MVC 2 Beta의 변경 내용을 변경하는 ValueProvider에 따라 다음 사용자 지정 모델 바인더를 수정하려고합니다.Asp.Net MVC 2 Beta ModelBinder 변경

protected override void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var obj = bindingContext.Model as Core.BusinessBase; 
     if (obj != null) 
     { 
     var errors = from r in obj.BrokenRulesCollection 
        where r.Severity == Validation.RuleSeverity.Error 
        select r; 
     foreach (var item in errors) 
     { 
      bindingContext.ModelState.AddModelError(item.Property, item.Description); 
     //Was -> bindingContext.ModelState.SetModelValue(item.Property, bindingContext.ValueProvider[item.Property]); 
     bindingContext.ModelState.SetModelValue(item.Property, bindingContext.ValueProvider.GetValue(controllerContext, item.Property)); 
     } 
     } 
     else 
     base.OnModelUpdated(controllerContext, bindingContext); 
} 

문제는이 라인은 다시 항상

BindingContext.ValueProvider.GetValue(controllerContext, item.Property) 

어떤 아이디어에 null 온다?

답변

0
//DefaultModelBinder.GetModelProperties  
var val = GetModelProperties(controllerContext,bindingContext)[item.Property]; 

어때요?