Найти точный тип ASP.NET страницы внутри главной страницы - PullRequest
0 голосов
/ 07 января 2010

Я пытаюсь получить пользовательский набор атрибутов для класса страницы изнутри MasterPage. Обычно для этого мне нужно отразить непосредственно на конкретном классе, но внутри главной страницы он всегда называется типом Page (родительский класс).

Как определить конкретный тип свойства Page?

Вот пример того, что я пытаюсь сделать:

Dim attrs() As Object = Page.GetType().GetCustomAttributes(GetType(MyCustomAttribute), False)
For Each attr As MyCustomAttribute In attrs
    ' Do something '
Next

но он только когда-либо возвращает атрибуты, прикрепленные к фактическому Page классу.

Я бы предпочел не выводить новый базовый тип из Page, если бы я мог его избежать.

Вот как определяется мой класс (в коде):

<MyCustom()> _
Partial Class PageClass

Я определяю это не в том месте?

Ответы [ 3 ]

2 голосов
/ 07 января 2010

Хотя Page был фактическим типом, это был класс, представляющий страницу ASPX, а не частичный класс, к которому был прикреплен мой атрибут. Чтобы найти частичный класс, мне нужно было только сделать следующее:

Page.GetType().BaseType

и использовал мой код для поиска атрибутов.

Спасибо TonyB и за этот вопрос за указание в правильном направлении.

1 голос
/ 07 января 2010

Я думаю, что вы передаете неправильный тип в GetCustomAttributes

Я добавил ярлык с именем «lblMP» на свою главную страницу и при запуске:

    protected void Page_Load(object sender, EventArgs e)
    {
        lblMP.Text = this.Page.GetType().AssemblyQualifiedName;

        foreach( var a in Attribute.GetCustomAttributes(this.Page.GetType()))
        {
            lblMP.Text = String.Format("{0} <br />{1}", lblMP.Text, a);
        }
    }

Он правильно показывает пользовательский атрибут, добавленный в Default.aspx. Вот вывод, показывающий мой атрибут «MPTesting.CustomAttribute».

ASP.default_aspx, App_Web_tkeebnzk, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
System.Runtime.CompilerServices.CompilerGlobalScopeAttribute
MPTesting.CustomAttribute
System.ComponentModel.DesignerAttribute
System.ComponentModel.ToolboxItemAttribute
System.ComponentModel.DefaultEventAttribute
System.ComponentModel.DesignerCategoryAttribute
System.ComponentModel.Design.Serialization.DesignerSerializerAttribute
System.ComponentModel.DesignerAttribute
System.ComponentModel.Design.Serialization.DesignerSerializerAttribute
System.ComponentModel.DefaultPropertyAttribute
System.ComponentModel.BindableAttribute
System.Web.UI.ThemeableAttribute
System.Web.UI,Require
0 голосов
/ 07 января 2010

Вам необходимо передать экземпляр страницы на главную страницу. Вероятно, я бы передал какую-то функцию обратного вызова на главную страницу из класса страниц.

...