1

'PartialA'와 'PartialB'라는 두 부분 뷰가 포함 된 '컨테이너'라는 부분 뷰가 있다고 가정 해 보겠습니다. 'Conatiner'부분보기에서는 일종의 구성 기능이 필요하므로 기본보기에서 '컨테이너'부분보기를 사용할 때 내부보기의 가시성을 제어 할 수 있습니다. 즉 PartialA와 PartialB 둘 다 렌더링해야하는지 아니면 렌더링 만해야하는지 그들 중 하나 또는 전혀. 기본적으로 메인 뷰에서 어떤 내부 뷰를 렌더링할지 결정해야합니다.부분보기를 구성 가능하게 만드는 방법은 무엇입니까?

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+1

보기 데이터를 사용하거나보기에 가시성을 지정하는보기를 전달하십시오. –

+0

뷰 모델에 동의하고 (아래의 응답에 반영) 뷰 데이터에 동의하지 않습니다. 그것은 작동하지만, 같은 객체 지향 응용 프로그램에서 전역 변수를 선언합니다. 정말 나쁜 디자인 IMHO, 물론 글로벌 변수와 뷰 데이터 모두 작동합니다. –

답변

3
  1. 당신이 1 개 플래그를 포함 컨테이너에 전달됩니다 뷰 모델을 작성 (또는 기존에 추가) : 당신이 될 수있는 가시성을 원하는대로

    public bool PartialAVisible; 
    public bool PartialBVisible; 
    
  2. 는 가시성 플래그를 설정 기본보기로 문의하거나 기본보기 내부와 컨테이너에 컨테이너

  3. 에 걸쳐 전달합니다 컨트롤러는 다음과 같은 논리를 수행

    if (PartialAVisible) 
        @Html.Partial("PartialA", model) 
    if (PartialBVisible) 
        @Html.Partial("PartialB", model) 
    

희망이 당신이 당신의 응용 프로그램에서이 작업을 통해 필요 위하여려고하는 경우에 당신은 System.Web.Mvc.ViewPage에서 상속 할 수

+0

고마워, 큰 도움이 ... – binu

0

이 규칙을 추가 할 수 있습니다.

public class ViewPageBase : System.Web.Mvc.ViewPage 
{ 
    public bool PartialAVisable 
    { 
     get 
     { 
      //Determin if visable 
     } 

    } 

    public bool PartialBVisable 
    { 
     get 
     { 
      //Determin if visable 
     } 

    } 

    protected override void Render(HtmlTextWriter writer) 
    { 
     if (PartialAVisable) 
     { 
      //Apend partail A 
     } 

     if (PartialBVisable) 
     { 
      //Apend partail B 
     } 

     base.Render(writer); 
    } 
} 
관련 문제