Я искал все выше и ниже, так что, надеюсь, кто-нибудь сможет мне помочь. У меня есть класс:
public class Person
{
public string Name { get; set; }
public ICollection<Toys> { get; set; }
}
У меня есть метод контроллера:
public ActionResult Update(Person toycollector)
{
....
}
Я хочу привязать к коллекции. Я понимаю, что получу только идентификаторы, но я справлюсь с этим в моем контроллере. Мне просто нужно пролистать коллекцию удостоверений личности. Я начал писать модель переплета:
public class CustomModelBinder : DefaultModelBinder
{
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
{
if (propertyDescriptor.PropertyType == typeof(ICollection<Toys>))
{
//What do I do here???
}
}
Так как мне собрать коллекцию игрушек из значений, переданных в мой метод? Спасибо!
EDIT:
Похоже, я не смог опубликовать этот ответ на свой вопрос, поэтому я просто отредактирую свой пост. Похоже, все, что вам нужно сделать, это разобрать данные и добавить их в модель следующим образом:
if (propertyDescriptor.PropertyType == typeof(ICollection)) {
var incomingData = bindingContext.ValueProvider.GetValue("Edit." + propertyDescriptor.Name + "[]");
if (incomingData != null)
{
ICollection<Toy> toys = new List<Toy>();
string[] ids = incomingData.AttemptedValue.Split(',');
foreach (string id in ids)
{
int toyId = int.Parse(id);
toys.Add(new Toy() { ToyID = toyId });
}
var model = bindingContext.Model as Person;
model.Toys = toys;
}
return;
}