Во-первых, потерпите меня здесь. У меня есть пользовательское связывание модели, которое успешно сопоставляет данные формы с пользовательским объектом. В этом связывателе модели он также сопоставляет элементы формы с различными пользовательскими объектами. Я чувствую, что должен быть в состоянии сделать отдельный связыватель модели, чтобы позаботиться об этом втором отображении. Это упрощенная версия.
Пользовательские объекты:
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string Status { get; set; }
public string Description { get; set; }
public IEnumerable<SubCategory> SubCategories { get; set; }
}
public class SubCategory
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Status { get; set; }
}
Если моя форма возвращает кучу идентификаторов для подкатегорий, мне нужно бежать в хранилище данных и гидратировать объект подкатегории. Из формы список подкатегорий будет представлен в следующем формате:
<input type="text" name="Name" value="This Category" />
<input type="hidden" name="subcat.Index" value="0" />
<select name="subcat[0].Id">
<option value="1">Something</option>
<option value="2">Something else</option>
</select>
<input type="hidden" name="subcat.Index" value="1" />
<select name="subcat[1].Id">
<option value="1">Something</option>
<option value="2">Something else</option>
</select>
<input type="hidden" name="subcat.Index" value="2" />
<select name="subcat[2].Id">
<option value="1">Something</option>
<option value="2">Something else</option>
</select>
Написание пользовательского сопоставления категории, очевидно, просто, написание связывателя модели, который, в свою очередь, сопоставит подкатегорию (внутри связывателя модели я бы выполнил запрос к моему репозиторию данных), оказывается немного сложным.
Я не уверен, насколько ясно я это сделал, извините, спасибо за чтение и, пожалуйста, дайте мне знать, если есть что-то, что я могу сказать, чтобы сделать это яснее!