내 응용 프로그램에서 트리보기를 구현하려고합니다. MVC2 미리보기 1과 SubSonic 3 SimpleRepository를 사용하고 있습니다. 나는 MVC와 Linq에 새로운 사람이다.채우기 Childnode 목록 : Linq 혼란과 우려의 분리
내 문제는보기로 다시 전달할 모델 레코드에 자식 노드 목록을 추가하는 방법을 잘 모르겠다는 것입니다.
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; }
}
그런 다음 컨트롤러 액션에, 나는 모든 레코드를 끌어와 어린이 회원 갱신을 반복 :
를 그래서 나는 IEnumerable을 내가 컨트롤러 액션에 채워 내 모델 클래스에 어린이라는 추가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 get set을 볼 수 있습니다. 그러나 범주의 내용은 변경되지 않습니다. 내 질문은 왜 이것이 작동하지 않는가? – bq1990