ASP.Net - C# - 将页面作为参数传递

时间:2011-08-29 09:14:53

标签: asp.net reference

我有一个网站。从网页的每个页面我想调用一个函数,它将接收一个类型为Page的参数。每个页面都会将自身的引用传递给该函数。

该功能将根据某些逻辑隐藏并显示该页面上的某些控件。

现在我不确定如何传递page参数。如果我传递“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

这里有什么想法吗?

1 个答案:

答案 0 :(得分: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");