如何在用户控件中使用Page变量?

时间:2014-04-17 15:01:07

标签: c# asp.net user-controls postback

我有一个包含私有变量的页面:AccountData

这会处理所有帐户数据,并将其保存在回复之间的 viewstate 中。
我有一个名为AccountFavorites的用户控件,它可以呈现所有帐户收藏夹主题。

当用户决定取消一个喜欢的主题时,他点击了asp:LinkButton,然后回发到服务器以更改数据库中的值。

但是,控件不知道AccountData是什么,只知道页面是什么。

如何在对照的回发中使用AccountData

我可以将回发转到页面吗?

2 个答案:

答案 0 :(得分:2)

<myprefix:AccountFavorites runat="server" id="TheAccountFavorites" />

在您的页面中设置信息...

protected void Page_Load(object sender, EventArgs e)
{
    TheAccountFavorites.TheAccountData=MyAccountData;//assuming you'll load up MyAccountData
}

在您的控件中,将AccountData公开为公共属性。这将允许您从页面访问它。

public AccountData TheAccountData {get;set;}

这假设AccountData是类型名称,而不是其他东西,如字符串。但您可以将AccountData更改为字符串,它将起作用。

答案 1 :(得分:1)

由于它是拥有/父级用户控件的页面,因此页面最好知道控件的细节,而不是相反。将AccountData属性添加到控件并在页面的Page_Load中执行:

uc.AccountData = AccountData;