강력하게 형식화 된 MVC 4 프로젝트에서 부분 뷰가 있습니다. 데이터베이스 테이블의 IEnumerable 컬렉션을 사용합니다. 이 테이블에는 레코드 간의 계층 적 연결을 저장하기위한 ID, Names 및 ParentID가 있습니다. 또한 강력하게 형식화 된 부분 뷰를 호출하는 뷰가 모델로 전체 데이터베이스를 취하고, 열거 가능한 컬렉션으로, 부분보기로 범주 테이블을 전달합니다,ASP.NET MVC 4 재귀 부분 뷰를 사용하여 트리 뷰 생성
@Html.Partial("_TreeCategories", @Model.Categories.ToList())
그리고 부분보기 내가 먼저 루트 노드를 가져 와서 재귀 적으로 전체 트리를 확장 할 수 있습니다. 데이터베이스 테이블에서 모든 레코드는 ParentID == null 인 루트 노드로 간주됩니다. 모델의 첫 번째 요소의 ParentID가 null의 경우
@model IEnumerable<TreeCollections.OpenAccess.Category>
@if (Model.ToList().Count >= 0)
{
@if (Model.ToList()[0].Parent_id == null)
{
<text><ul id="navigation"></text>
}
@foreach (var node in @Model)
{
<li><a href="[email protected]">@node.Name</a>
@foreach (var subNode in @Model.Where(s => s.Parent_id == node.Id))
{
@Html.Partial("_TreeCategories", subNode)
}
</li>
}
@if (Model.ToList()[0].Parent_id == null)
{
</ul>
}
}
그래서 내가 확인하고 있는지, 그것은을 가진 < UL> 태그를 만들어야합니다
그래서 일반적으로이 작업을 수행하는 내 방식은 같을 것이다 id는 "네비게이션"이므로 jquery 플러그인은 트리 뷰 컨트롤이라는 것을 인식 할 수 있습니다. 그런 다음 재귀 호출이 포함 된 목록 태그를 만듭니다. 재귀 적으로 호출 된 부분 뷰는 노드의 자식을 모델로 가져옵니다. 마지막으로 부분 뷰의 렌더링이 끝나고 "루트 수준"에 도달하면 닫기 < ul> 태그
을 작성해야합니다. 그러나 몇 가지 문제가 있습니다. 첫째, 마지막에 정렬되지 않은 목록 태그가 잘못 되었기 때문에 VS는 일치하는 시작 태그를 찾을 수 없습니다. 둘째, 이유는 모르겠지만 맨 위에는 시동기 < ul> 태그를 태그 사이에 넣을 수 있습니다. 아래 닫는 태그에서이를 수행 할 수 없습니다. 그러나이 < ul> 태그 중 하나에 대해 확신 할 수 없지만 그 역시 잘못되었습니다.
제발 도와주세요. 지금은 며칠 동안 붙어 있습니다.
고맙습니다. 아직은 분명하지만 며칠 동안 혼란 스러웠습니다. 컴퓨터 전체 시스템을 다시 설치 했으므로 Visual Studio를 다시 다운로드하여 설치하기까지 약간의 시간이 걸립니다. 밖으로,하지만 적어도 나는 지금 패턴을 본다! 정말 고맙습니다! – user2082422
그게 대부분의 시간, 도움을 기쁘게 –
그런데, 어떤 종류의 부모 - 자녀 매핑을 권장합니까? 이 "ID - ParentID"메서드는 데이터베이스와 같은 관계형 데이터 모델에서 계층 적 데이터 구조를 구현하는 한 가지 방법이기 때문에이 메서드를 선택했습니다. Categories 테이블에서 ID는 기본 키이고 ParentID는 Categories.ID를 참조하는 외래 키입니다. – user2082422