代码之家  ›  专栏  ›  技术社区  ›  Jess

从母版页内查找准确的ASP.NET页类型

  •  0
  • Jess  · 技术社区  · 15 年前

    我试图从母版页内部检索页面类的自定义属性集。通常情况下,我需要直接反映在特定的类上,但是在母版页中,它总是被称为 Page 类型(父类)。

    我如何确定 财产?

    以下是我的一个例子 尝试 要做:

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

    但它只返回附加到 班级。

    我不想从 如果我能避免的话。

    下面是如何定义我的类(在后面的代码中):

    <MyCustom()> _
    Partial Class PageClass

    我是不是把这个定义错了?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Community Dunja Lalic    7 年前

    同时 Page 是实际类型,它是表示ASPX页的类,而不是我的属性附加到的部分类。要找到部分类,我只需执行以下操作:

    Page.GetType().BaseType
    

    并在上面使用了我的属性查找代码。

    多亏了Tonyb和 this SO question 因为我指向了正确的方向。

        2
  •  1
  •   TonyB    15 年前

    我认为您将错误的类型传递给了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
    
        3
  •  0
  •   Rodrick Chapman    15 年前

    您需要将页面实例传递到母版页。我可能会从页面类中将某种回调函数传递给母版页。