바인딩 사용자 정의 모델 나는이Asp.net MVC 3-
public string Name { get; set; }
public IEnumerable<int> ProjectMembersId { get; set; }
속성 이름과 같은 모델은 코드를 바인딩의 standart를 사용하여 바인딩해야합니다.
그러나 ProjectMembersId 속성은 내 사용자 지정 코드를 사용하여 바인딩해야합니다.
그래서 DefaultModelBinder에서 클래스를 파생시키고 SetProperty 메서드를 재정의했습니다.
protected override void SetProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
{
if (propertyDescriptor.Name == "ProjectMembersId")
{
var list = new List<int>(5);
var form = controllerContext.HttpContext.Request.Form;
var names = form.AllKeys.Where(x => x.StartsWith("dhxGridObj"));
foreach (var name in names)
{
int i;
if (int.TryParse(form.Get(name), out i))
{
list.Add(i);
}
}
value = list;
}
base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value);
}
버드 값 공급자에 ProjectMembersId라는 항목이 없으므로 SetProperty 메서드가 호출되지 않습니다.
아마도 defaultModelBinder의 잘못된 부분을 무시하고 있습니다. 그래서 가장 좋은 방법은 무엇일까요?
는이 모델에 대한 사용자 정의 ModelBinder를 등록 있나요? – frennky
물론 modelbinder는 SetProperty func가 생략 된 것으로 불립니다. – user256034