Во-первых, потерпите меня здесь. У меня есть пользовательский механизм связывания моделей, который успешно отображает данные формы в пользовательский объект. Внутри этой связующей модели она также отображает элементы формы в другой пользовательский объект. То, что я чувствую, я должен быть в состоянии сделать, это создать отдельное связующее для моделей, чтобы позаботиться об этом втором отображении. Это упрощенная версия.
Пользовательские объекты:
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>
Написание пользовательского элемента для сопоставления категории, очевидно, просто, написание связывателя модели, который, в свою очередь, сопоставит подкатегорию (в связывателе модели я бы запустил запрос к моему хранилищу данных), оказывается немного сложным.
Я не уверен, насколько ясно я сделал это, извиняюсь, спасибо за чтение, и, пожалуйста, дайте мне знать, если я могу что-то сказать, чтобы сделать это яснее!