none
메뉴컨트롤조건문/ 권한에 따른 메뉴컨트롤 제어방법 RRS feed

  • 질문

  • 마스터페이지의 메뉴컨트롤을 만들어서 사용중인데 권한에 따라 특정 메뉴를 감출려고 합니다;
    
    권한에 대한 정보는 앞단에서 글로벌 함수로 정의해서 만들어둔 상태입니다. 
    권한 정보의 변수가 _master  / 이변수의 값이 1, 2,3 으로 나뉘며 
    
    1일경우는 메뉴1만 
    2일경우는 메뉴2만
    3일경우는 메뉴3만 
    보이도록 처리 할려고 합니다. 
    
    CS단에서 처리 해야할거같은데;;
    어떻게 처리 해야할까요 
    
    <Items>
    <asp:MenuItem Text ="메뉴1" Value ="메뉴1">     
    <asp:MenuItem Text ="sub1-1" Value ="sub1-1" />
    <asp:MenuItem Text ="sub1-2" Value ="sub1-2" />
    </asp:MenuItem>
    </Items>
      <Items>
    <asp:MenuItem Text ="메뉴2" Value ="메뉴2">  
    <asp:MenuItem Text ="sub2-1" Value ="sub2-1" />
    </asp:MenuItem>
    </Items>
    <Items>
    <asp:MenuItem Text ="메뉴3" Value ="메뉴3"> 
    <asp:MenuItem Text ="sub3-1" Value ="sub3-1" />
    <asp:MenuItem Text ="sub3-2" Value ="sub3-2" />
    </asp:MenuItem>
    </Items>
    
    2013년 12월 3일 화요일 오전 7:25

답변

  • 메뉴 컨트롤의 경우 Visible 에 관련된 기능을 제공하지 않고 Enable에 관련된 속성만 제공됩니다.

    위와 같이 코딩이 되어 있다면 cs단에서 아래와 같이 설정할 수 있습니다.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication3
    {
        public partial class WebUserControl1 : System.Web.UI.UserControl
        {
            public int Master { get; set; }
            protected void Page_Load(object sender, EventArgs e)
            {
                Master = 1;
    
                foreach (MenuItem item in Menu1.Items)
                {
                   if (Master.ToString() == item.Value)
                        item.Enabled = true;
                   else
                        item.Enabled = false;
                }
            }
        }
    }

    메뉴 컨트롤을 사용하지 않고 Table에 메뉴를 추가해서 수동으로 메뉴를 구성한다면

    해당 Row에 ID를 주고 위의 방식으로 체크하여 Hidden 처리가 가능합니다.

    참고하세요.


    • 편집됨 GoldrushKoreaMVP 2013년 12월 26일 목요일 오전 3:53
    • 답변으로 표시됨 레리 2013년 12월 30일 월요일 오전 5:16
    2013년 12월 26일 목요일 오전 3:46