1

假設我有一個名爲'Container'的局部視圖,它包含兩個部分視圖'PartialA'和'PartialB'。在'Conatiner'部分視圖中,我想要某種配置能力,以便在主視圖上使用'Container'部分視圖時,我們可以控制內部視圖的可見性,即PartialA和PartialB是否應呈現或僅呈現他們中的任何一個或根本沒有他們。基本上我想要主視圖來決定應該渲染哪些內部視圖。如何使局部視圖可配置?

達到此目的的最佳方法是什麼?

+1

使用視圖數據或傳遞視圖指定可見性的模型。 –

+0

同意視圖模型(反映在下面的答案中),不同意視圖數據。雖然它會起作用,就像在面向對象的應用程序中聲明全局變量一樣。真是糟糕的設計恕我直言,但當然,全球變量和視圖數據將工作。 –

回答

3
  1. 創建,你將傳遞到集裝箱,其中將包括1個旗幟視圖模型(或添加到現有的一個):

    public bool PartialAVisible; 
    public bool PartialBVisible; 
    
  2. 如你所願的知名度,在設置可視性標誌這將調用主視圖或主視圖內並且將它傳遞到集裝箱

  3. 在容器中的控制器執行以下邏輯

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

希望這有助於

+0

非常感謝,非常有幫助... – binu

0

你可以從System.Web.Mvc.ViewPage繼承添加規則那裏,如果你正在經歷的需要這一點,你的應用程序。

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); 
    } 
}