ASP.net内容Web表单是否能够访问它的代码隐藏部分中声明的变量';s母版页?
我有一个母版页控制我的网站的样式。在代码隐藏中,有几个实例化的类实例和变量。这些类验证用户访问,然后创建用户对象 我有一些基于用户对象执行指令的Web内容表单。到目前为止,似乎在每个Web内容表单上,我都必须创建母版页上的类的新实例。对于每一个Web内容表单,这是我工作的两倍 我是否可以在母版页代码隐藏中保存实例化的类和对象?在ASP.net内容Web表单是否能够访问它的代码隐藏部分中声明的变量';s母版页?,asp.net,master-pages,Asp.net,Master Pages,我有一个母版页控制我的网站的样式。在代码隐藏中,有几个实例化的类实例和变量。这些类验证用户访问,然后创建用户对象 我有一些基于用户对象执行指令的Web内容表单。到目前为止,似乎在每个Web内容表单上,我都必须创建母版页上的类的新实例。对于每一个Web内容表单,这是我工作的两倍 我是否可以在母版页代码隐藏中保存实例化的类和对象?在母版页上将对象(甚至控件)公开为公共属性(仅获取控件)。然后,在要访问这些对象的每个aspx页面的顶部添加以下声明: <%@ MasterType VirtualP
母版
页上将对象(甚至控件)公开为公共属性(仅获取控件)。然后,在要访问这些对象的每个aspx
页面的顶部添加以下声明:
<%@ MasterType VirtualPath="~/MyMasterPage.master" %>
正如@Kristof所指出的,只需访问您的属性,如Master.PropertyName
此外,您还可以确定将对象存储在用户
会话中是否有意义(如果使用DB作为会话状态,请不要忘记它们必须是可序列化的)。我经常这样做,并通过所有页面继承自的基本Page
类中的属性来控制对它们的访问。实际上,我有一个基本的主控
,页面
,和用户控件
,所以我可以访问所有地方的相同属性(对我来说,它是当前用户
)。如果你公开这些属性,我相信你可以。
然后在您的子页面中,您可以进行如下呼叫:
SiteMaster master = (SiteMaster)this.Master;
master.MyProperty = 0;
其中SiteMaster
是母版页的类。(SiteMaster
是应用程序模板的默认设置)
虽然我的思想可以欺骗我,但我已经有一段时间没有这么做了……如果你像Brad的回答那样设置Mastertype指令,你不需要施放。我现在知道了:p但是我们同时写了答案,我不知道这个方法。正确。完成此操作后,您可以访问如下属性:Master.Property