Я пытаюсь реализовать древовидное представление в своем приложении. Я использую MVC2 Preview 1 и SubSonic 3 SimpleRepository. Я новичок в MVC и Linq.Заполнение списка Childnode: путаница Linq и разделение проблем
Моя проблема в том, что я не уверен, как добавить список дочерних узлов в запись модели, которую я передаю обратно в представление. Так что я добавил IEnumerable назвал ребенок к моей модели классу, который я заселить в действии контроллера:
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; }
}
Затем в действии контроллера, я тяну все записи и перебирать обновления члена Детей:
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 В общем смысле, это правильный подход? Помещение этого кода в контроллер выглядит как взлома.
Я не думаю, что вы поняли, что конкретно не работает? Я согласен, что эта логика не должна находиться в контроллере. Похоже, что репозиторий должен обеспечить правильную гидратацию класса модели. –
Пройдя через foreach с отладчиком, я вижу, что c.Children получает набор. Однако содержание категорий не меняется. Мой вопрос, почему это не работает? – bq1990