Как получить установленное / реальное значение свойства Visible в Asp.Net

Свойство Get of Visible элемента управления рекурсивно просматривает дерево, чтобы указать, будет ли отображаться элемент управления или нет.

Мне нужен способ, чтобы увидеть, что "местный" видимое значение элемента управления независимо от того, на что установлены его родительские элементы управления. т. е. было ли оно установлено в true или false.

Я видел этот вопрос,Как получить «реальный» значение Видимого свойства? который использует Reflection для получения локального состояния, однако я не смог заставить это работать для WebControls. Это's также довольно грязный метод получения значения.

Я придумал следующий метод расширения. Он работает, удаляя элемент управления из его родителя, проверяя свойство, а затем помещая элемент управления туда, где он его нашел.

    public static bool LocalVisible(this Control control)
    {
        //Get a reference to the parent
        Control parent = control.Parent;
        //Find where in the parent the control is.
        int index = parent.Controls.IndexOf(control);
        //Remove the control from the parent.
        parent.Controls.Remove(control);
        //Store the visible state of the control now it has no parent.
        bool visible = control.Visible;
        //Add the control back where it was in the parent.
        parent.Controls.AddAt(index, control);
        //Return the stored visible value.
        return visible;
    }

Это приемлемый способ сделать это? Работает нормально а у меня нетне сталкивался с проблемами производительности. Это просто кажется очень грязным, и я не сомневаюсь, что могут быть случаи, когда он может потерпеть неудачу (например, при рендеринге).

Если у кого-то есть какие-либо мысли по поводу этого решения или, еще лучше, более хороший способ найти ценность, то это было бы здорово.

Ответы на вопрос(3)

Ваш ответ на вопрос