asp.net

[.net] mvc 웹 프로젝트(2)

TTTGGG 2024. 6. 27. 10:50
728x90
반응형
SMALL

데이터 구성

 

Data 프로젝트에 Model, DbContext, DataInitializer 생성

 

메뉴 모델 구성

 - 메뉴는 상단에 대분류, 대분류 클릭하면 사이드 메뉴에 서브메뉴 출력

 - 서브메뉴는 부모, 자식 노드 구성할 수 있도록 할 것

 

public class Menu
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }
    public ICollection<SubMenu> SubMenus { get; set; }
}

 

public class SubMenu
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Href { get; set; }
    public int? ParentSubMenuId { get; set; }
    public SubMenu ParentSubMenu { get; set; }
    public ICollection<SubMenu> SubMenus { get; set; } = new List<SubMenu>();
    public int MenuId { get; set; }
    public Menu Menu { get; set; }
}

 

 

메뉴 데이터 구성

 - DB 구축하기 전에는 DataInitializer에서 임시로 데이터 등록 

 

var standardInfo = new Menu
{
    Name = "기준정보",
    Category = "standard-info",
    SubMenus = new List<SubMenu>
{
    new SubMenu { Name = "기준정보1", Href = "/Standard/StandardInfo1" },
    new SubMenu { Name = "기준정보2", Href = "/Standard/StandardInfo2" },
    new SubMenu { Name = "기준정보3", Href = "/Standard/StandardInfo3" }
}
};

var systemGroup1 = new SubMenu
{
    Name = "시스템 그룹1",
    Href = "#",
    SubMenus = new List<SubMenu>
{
    new SubMenu { Name = "시스템1", Href = "/System/System1" },
    new SubMenu { Name = "시스템2", Href = "/System/System2" }
}
};

var systemGroup2 = new SubMenu
{
    Name = "시스템 그룹2",
    Href = "#",
    SubMenus = new List<SubMenu>
{
    new SubMenu { Name = "시스템3", Href = "/System/System3" },
    new SubMenu { Name = "시스템4", Href = "/System/System4" },
    new SubMenu { Name = "시스템5", Href = "/System/System5" }
}
};

foreach (var subMenu in systemGroup1.SubMenus)
{
    subMenu.ParentSubMenu = systemGroup1;
}

foreach (var subMenu in systemGroup2.SubMenus)
{
    subMenu.ParentSubMenu = systemGroup2;
}

var system = new Menu
{
    Name = "시스템",
    Category = "system",
    SubMenus = new List<SubMenu> { systemGroup1, systemGroup2 }
};

systemGroup1.Menu = system;
systemGroup2.Menu = system;

context.Menus.AddRange(standardInfo, system);

728x90
반응형
LIST