계층 적 트리를 렌더링하려고하면 ASP.NET MVC에서이 작업을 수행 할 수있는 방법이 많이 있습니다. 다음과 같이 부분 뷰를 사용할 수 있습니다.
여기
public class HierarchicalModel
{
public HierarchicalModel()
{
this.Children = new List<HierarchicalModel>();
}
public String Name { get; set; }
public List<HierarchicalModel> Children { get; set; }
}
당신의 간단한 계층 모델
입니다 다음에 당신이 생성/모델을 가져올하고 viewbag에 넣어 작업 중 하나.
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
var level0 = new HierarchicalModel() { Name = "item 0, level 0" };
level0.Children.Add(new HierarchicalModel() { Name = "item 0, level 1" });
level0.Children.Add(new HierarchicalModel() { Name = "item 1, level 1" });
level0.Children.Add(new HierarchicalModel() { Name = "item 2, level 1" });
var level1 = new HierarchicalModel() { Name = "item 3, level 1" };
level1.Children.Add(new HierarchicalModel() { Name = "item 0, level 2" });
level1.Children.Add(new HierarchicalModel() { Name = "item 1, level 2" });
level0.Children.Add(level1);
ViewBag.HierarchicalModel = level0;
return View();
}
이제 부분보기 (예 : 뷰/공유 디렉토리의 _HierarchicalModel.cshtml 모델이 위치한 네임 스페이스로 MvcApplication4를 대체하십시오.
@model MvcApplication4.HierarchicalModel
<li>
@Model.Name
<ul>
@foreach (var item in Model.Children)
{
@Html.Partial("_HierarchicalModel", item);
}
</ul>
</li>
다음보기에서 렌더링합니다.
@{
MvcApplication4.HierarchicalModel model = ViewBag.HierarchicalModel;
}
<p>
<ul>@Html.Partial("_HierarchicalModel", model)</ul>
</p>
이렇게하는 것이 가장 간단한 방법입니다. 어쨌든 순환 참조 및 심층 계층 구조에주의해야합니다.
정확히 MvcApplication4는 무엇을 나타 냅니까? – Peter
프로젝트 이름입니다. 귀하의 경우 모델이 위치한 전체 네임 스페이스로 대체하십시오. 당신은 또한 지침을 사용하여 면도기를 추가 할 수 있습니다 '@ using Your.Namespace; 여기에 대한 자세한 내용을 볼 수 있습니다 [link] http://stackoverflow.com/questions/3239006/how-to-import-a- namespace-in-razor-view-page – aruss