2010-04-20 6 views
0

왜 작동하지 않습니까?asp.net, 사용/사용 안 함 tabpanel

<ajaxToolkit:TabPanel Enabled='<%# User.IsInRole("admin") %>'... 

이 작동하는 동안 :

<asp:TextBox Enabled='<%# User.IsInRole("admin") %>'... 
+0

왜 안 되니? 무슨 일이야? – SLaks

+0

아무 일도 일어나지 않고 TabPanel이 활성화 된 상태로 유지됩니다. 입력 할 때만 Enabled = "false"이면 회색으로 변합니다. TextBox는 예상대로 작동하며 사용자 역할에 따라 사용/사용 안 함으로 설정됩니다. – henrico

답변

0

는 바인딩 컨텍스트 (바운드 컨트롤) 내 첫 번째 예인가? 아마도 바인딩 지시문 대신 출력 지시문을 사용하고 싶습니까?

<ajaxToolkit:TabPanel Enabled='<%= User.IsInRole("admin") %>' 

편집 : 내 나쁜. <%= %>은 당신이 원하는 것이 아닌 Response.Write로 변환됩니다. ASP.NET MVC에도 익숙합니다. 가장 좋은 방법은 코드를 runat="server"으로 만들고 ID를 지정하고 코드 숨김 값을 설정하는 것입니다.

<ajaxToolkit:TabPanel runat="server" ID="myTabs" ... /> 


protected void Page_Load(object sender, EventArgs e) 
{ 
    myTabs.Enabled = User.IsInRole("admin"); 
    ... 
} 
+0

흠 ... 그건 맞는 것 같아. 그러나 이제는 다음이 발생합니다. 파서 오류 메시지 : 'Enabled'속성에 대한 문자열 표현 '<% = User.IsInRole ("admin") %>'에서 'System.Boolean'형식의 개체를 만들 수 없습니다. . – henrico

+0

예, <%= %>은 클라이언트 측 코드에서만 작동합니다. MS는 서버 측 컨트롤을 사용하는 경우 코드 숨김으로 데이터 바인딩 또는 속성을 설정한다고 가정합니다. –