从.ascx引用.aspx属性

时间:2011-04-11 12:48:22

标签: asp.net user-controls


我想从我的.ascx中引用我的.aspx中的属性。

让我们说我的页面类是:

public partial class MyAdminPage : System.Web.UI.Page

我期待着我能从我的.ascx做起:

MyAdminPage myPageInstance =(MyAdminPage)this.Page;

MyAdminPage myPageInstance = this.Page as MyAdminPage;

我不能。

我怎样才能从.ascx中引用我的页面类?

更新1

感谢您的回复。

我忘了提到.aspx有一个母版页,在contentPlaceholder中我有.ascx控件。

如果我这样做,请从我的.ascx开始:
this.Parent - >我得到了对“ContentPlaceHolder”的引用 this.Parent.Parent - >我得到了对“HtmlForm”的引用 this.Parent.Parent - >引用'MasterPage'。

我不会在任何其他.aspx页面中重复使用.ascx。

4 个答案:

答案 0 :(得分:4)

sJohnny的评论很明显,您不应该尝试从子(控件)修改父(页面)属性。处理这种情况的一个好方法是让孩子在需要父母行动时举起一个事件。这样,父母可以简单地订阅事件并调用当时所需的任何属性。这样,您的用户控件就不会与此特定页面的实现相关联。

答案 1 :(得分:2)

你可以尝试

MyAdminPage myPageInstance = this.Parent as MyAdminPage;
if(myPageInstance != null)
{
...
}

答案 2 :(得分:1)

MyAdminPage myPageInstance = 
     (MyAdminPage)this.parent;//in you ascx will do the task

还要检查:Using parent page properties in user control

答案 3 :(得分:0)

您也可以使用MyAdminPage myPageInstance = (MyAdminPage)this.Page;