【问题标题】:C# ASPX: How to get a Parent page's inherited property in a Control?C# ASPX:如何在控件中获取父页面的继承属性?
【发布时间】:2011-10-16 17:04:14
【问题描述】:

我有一个 aspx 页面,它继承了一个具有受保护属性的母版页。像这样:

母版页 { 受保护的字符串 propX.. }

我的页面:母版页

---myControl:UserControl

在 myControl 代码隐藏中,我想访问 propX

有什么想法吗?

谢谢!

【问题讨论】:

    标签: asp.net user-controls properties inherited


    【解决方案1】:

    也许尝试将myControl 类的Page 属性转换为MyPage 类?

    字符串值 = ((MyPage)this.Page).propX

    如果你想从其他类访问这个属性(比如myControl),属性propX的访问修饰符应该设置为internalpublic

    我假设您已将 myControl 对象放在 MyPage 页面上。

    【讨论】:

      【解决方案2】:

      您可以更改字符串的访问修饰符。也许将其设置为内部。

      【讨论】:

        【解决方案3】:

        您确定要从母版页继承吗?添加 MasterPage 指令并不意味着它继承自它。通常一个 aspx 页面应该直接或间接地继承自 System.Web.UI.Page。

        母版页不是“继承的”,这意味着无法从页面类(或控件类)访问受保护的成员。您最好的选择是将属性设为公开或内部。

        【讨论】:

        • 对不起,我应该更清楚。 masterpage 只是我创建的一个继承 System.Web.UI.Page 的类,在 masterpage 中我做我的初始化工作,然后设置 MyPage:masterpage。我尝试了您的内部建议,但它不起作用。
        • 嗯,好的。您将永远无法从您的 UserControl 访问受保护的属性。受保护的属性只能从直接从它们继承的类中访问。内部属性只能由同一程序集/项目中的其他类访问。如果您的 UserControl 和 MasterPage 位于不同的程序集/项目中,那么您唯一的选择是将属性设置为公共。如果它们在同一个程序集中并且内部不起作用,那么肯定有其他问题 - 也许完整的代码示例会有所帮助。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多