2011-08-29 94 views
2

我有一個網站。從網頁的每一頁我想調用一個函數,它將接收一個類型爲Page的參數。每個頁面都會將其自身的引用傳遞給該函數。ASP.Net - C# - 傳遞頁面作爲參數

該功能將根據某些邏輯隱藏並顯示該頁面上的某些控件。

現在我不知道如何傳遞頁面參數。如果我通過「this」,我無法找到任何我想要隱藏或顯示的控件。這是我的功能

public static void Implement(string pageName, Page objPage) 
    { 
     if (pageName == "MANAGEMENT") 
     { 
      HyperLink obj = (HyperLink) objPage.FindControl("hlSave"); 
      if (obj != null) 
      { 
       obj.Visible = false; 
      } 
     } 
    } 

objPage.FindControl("hlSave");總是什麼錯在這裏返回null

任何想法?

+0

您使用母版頁? – NaveenBhat

+0

@Knvn,不,即使您沒有使用母版頁,我也沒有使用母版頁 – Riz

+0

,但我提供的FindControlRecursive方法必須找到它(性能較差)。你檢查過了嗎? – NaveenBhat

回答

2

如果您使用的是master page那麼可能導致FindControl返回null。在這種情況下,你可以使用:

HyperLink obj = (HyperLink)objPage.Master.FindControl("ContentPlaceHolderID").FindControl("hlSave"); 

,或者你可以用下面方法遞歸找到hlSave

public static Control FindControlRecursive(Control Root, string Id) 
    { 
     if (Root.ID == Id) 
      return Root; 

     foreach (Control Ctl in Root.Controls) 
     { 
      Control FoundCtl = FindControlRecursive(Ctl, Id); 
      if (FoundCtl != null) 
       return FoundCtl; 
     } 

     return null; 
    } 

你可以用它喜歡:

HyperLink obj = (HyperLink)FindControlRecursive(objPage, "hlSave");