2012-09-12 2 views
0

나는 MasterPageView 내에 ContentPlaceholder를 가지고 있습니다. 내 다른 모든 페이지는 동일한 마스터에서 왔으며이 마스터에서 동작의 약 70 %가 필요한 페이지가 하나 있습니다. 마스터에 페이지가 비워 두어도 불필요한 html이 나올 수있는 탐색 패널이 있습니다.클라이언트 코드 (MVC)가없는 자식이없는 경우 콘텐츠 자리 표시자를 숨기는 방법

내 자리 표시 자 (SideNavigation)에 0 개의 자식이있을 때마다이 마크 업을 모두 숨기고 싶습니다. 나는 자바 스크립트를 사용하고 싶지 않다. 차라리 서버에서이 작업을 수행하고 책임 및 마크 업이 적은 클라이언트에게 제공하는 것이 좋습니다. 나는 이미 "this.SideNavigation.Controls.Count"를 시도했다. 그러나 항상 0이된다.로드 된 이벤트에 묶을 수있는 방법이 있다면 위의 논리를 테스트하면 좋을 것이다. 내 마스터를위한 코드 숨김 파일을 만드는 것이 좋지만 .master 파일에서만 내 목표를 달성 할 수 있으면 좋을 것입니다.

당신의 생각을 알려주세요.

답변

0

탐색하지 않고 페이지에 다른 마스터 페이지를 사용하는 것이 좋습니다. 중첩 된 마스터 페이지가 있으므로 코드를 복제 할 필요가 없습니다. 이 같은 유지하고자하는 경우

$(function(){ 
    if($('.span3 .side_navigation ul li').length() == 0){ 
    $('.span3').hide(); 
    } 
}); 

을 다음과 같이
그러나, 나는 개인적으로 모든 span3을 숨길 수 있도록 분명히 내가 span3에게 ID를 줘야 할 것 (jQuery로) 자바 스크립트의 약간을 사용하지만, 당신은 잘하면 아이디어를 얻을.

+0

나는 이미 다른 마스터 페이지를 사용하여 원래의 문제를 해결했습니다. 비록이 자리 표시자를 페이지에서 사용했는지에 따라 html의 일부분을 렌더링하지 않는 것이 가능하다면, 여전히 알 필요가 있습니다. 당신의 접근 방식은 작동하지만 여분의 마크 업은 서버에 의해 처리되고 클라이언트에 침을 뱉었습니다. 이것은 약간 더 긴 로딩 시간을 의미합니다 (아무 것도 눈에 띄지 않아야합니다 ... 나는 단지 기술적 인 것입니다). 또한 클라이언트는 문제의 요소를 찾고 숨길 수있는 추가 스크립트를 실행해야합니다. 클라이언트가 충분히 느린 경우 "깜박임"이 발생할 수 있습니다. – GingerLoaf

+0

ASP.NET에서는 자리 표시 자에 액세스하고 자식 배열이 비어 있는지 확인하는 것이 매우 쉬웠습니다. 그런 다음 해당 데이터를 기반으로 요소 나 컨트롤을 숨길 수 있습니다. 수신 한 데이터에 따라 잠재적으로 변경 될 수있는 유동적 인 레이아웃을 만드는 데 매우 유용했습니다. MVC가 비슷한 일을 할 수 있는지 궁금합니다. – GingerLoaf