从后面的母版页代码中获取子页面的信息

时间:2011-11-28 13:29:09

标签: c# asp.net

在我的网站上,我有一组5个用户设置页面。他们每个人都使用一个名为settings.master的母版页。在代码隐藏中,页面的类定义如下所示:

public partial class AccountSettings : PageEx

母版的类定义如下所示:

public partial class Settings : System.Web.UI.MasterPage

PageEx有一个名为LoggedInUserInfo的对象。这是在OnInit期间填充的,其中包含有关登录用户的所有信息。

我想从母版页访问对象LoggedInUserInfo。因此,在母版页上,我想引用子页面拥有的对象。这可能吗?

4 个答案:

答案 0 :(得分:4)

当然是

在主人

(Page as PageEx).LoggedInUserInfo.Somefunction();

答案 1 :(得分:2)

LoggedInUserInfo听起来应该是Session State中的内容。也许您可以从母版页中的会话状态中检索它。

您可以将填充该对象的代码放在Session_Start Global.asax事件中。这样,每个登录的用户只会调用一次。

答案 2 :(得分:2)

对于在给定母版页范围内呈现的每个页面,已生成类型为ContentPlaceHolder的单个字段。 (见MasterPage.designer.cs)。通过访问ContentPlaceHolder.Page属性并转换为基础页面类型,您将能够访问所需内容:

// MainContent - name of your content place holder for a specific page rendered
// in scope of Master page
(this.MainContent.Page as PageEx).LoggedInUserInfo

答案 3 :(得分:1)

是的,有可能。

您只需要将LoggedInUserInfo放在MasterPage可访问的位置(HttpContext.Items,HttpContext.Session等),但是您确实需要从MasterPage访问此信息这一事实表明它应该属于MasterPage,更容易从子页面引用。