Я пытаюсь реализовать представление дерева в моем приложении. Я использую MVC2 Preview 1 и SubSonic 3 SimpleRepository. Я новичок в MVC и Linq.
Моя проблема в том, что я не уверен, как добавить список дочерних узлов в запись модели, которую я передаю обратно в представление. Поэтому я добавил IEnumerable с именем Children в свой класс модели, который я заполняю в действии контроллера:
public class Category
{
public Category()
{
}
public int ID { get; set; }
public int? ParentId { get; set; }
[Required(ErrorMessage="Name is required")]
public string Name { get; set; }
[SubSonicIgnore]
public IEnumerable<Category> Children { get; set; }
}
Затем в действии контроллера я извлекаю все записи и перебираю обновления элемента Children:
public ActionResult Index()
{
var categories = _repo.All<Category>();
foreach (var c in categories)
{
c.Children = from p in _repo.All<Category>()
where p.ParentId == c.ID
orderby p.Name
select p;
}
return View(categories);
}
Мои 2 вопроса # 1 Почему это не работает? Вне рамок цикла мои изменения теряются. # 2 В общем смысле, это правильный подход? Вставка этого кода в контроллер выглядит как хак.