У меня есть такая модель
public string Name { get; set; }
public IEnumerable<int> ProjectMembersId { get; set; }
Имя свойства должно быть связано с использованием стандартного кода привязки.
Но свойство 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);
}
Однако проблема в том, что метод SetProperty не вызывается, поскольку поставщик значений не содержит элемент с именем ProjectMembersId.
Возможно, я переопределяю неправильную часть defaultModelBinder.Так что было бы лучше всего пойти?