ASP.Net - C # - Передача страницы в качестве параметра - PullRequest
2 голосов
/ 29 августа 2011

У меня есть сайт. с каждой страницы сайта я хочу вызвать функцию, которая получит параметр типа 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"); всегда возвращает ноль

Есть идеи, что здесь не так?

1 Ответ

2 голосов
/ 29 августа 2011

Если вы используете 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...