在我的网站上,我有一组5个用户设置页面。他们每个人都使用一个名为settings.master
的母版页。在代码隐藏中,页面的类定义如下所示:
public partial class AccountSettings : PageEx
母版的类定义如下所示:
public partial class Settings : System.Web.UI.MasterPage
PageEx
有一个名为LoggedInUserInfo
的对象。这是在OnInit
期间填充的,其中包含有关登录用户的所有信息。
我想从母版页访问对象LoggedInUserInfo
。因此,在母版页上,我想引用子页面拥有的对象。这可能吗?
答案 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,更容易从子页面引用。