想象我在Global.asax中定义的属性。如何访问性能从Global.asax的一些其他页面的代码背后
public List<string> Roles
{
get
{
...
}
set
{
...
}
}
我想使用另一页中的值。我如何参考它?
想象我在Global.asax中定义的属性。如何访问性能从Global.asax的一些其他页面的代码背后
public List<string> Roles
{
get
{
...
}
set
{
...
}
}
我想使用另一页中的值。我如何参考它?
您可以访问类是这样的:
((Global)this.Context.ApplicationInstance).Roles
它看起来对我来说,只有依赖于会议 - 那么为什么不让它一对内搭会话参数静态方法?然后,您可以从页面中传递“会话”属性的值。 (任何有确实有机会获得的HttpApplication可以直接引用其Session属性,当然)。
如果这是你需要的所有页面访问的属性,你可能会更好地界定一个基本页面,所有的其他网页延长...
如默认情况下
public partial class _Default : System.Web.UI.Page
{
}
你可以做的就是添加一个BasePage.cs到您App_Code文件夹
public class BasePage : System.Web.UI.Page
{
public List<string> Roles
{
get { ... }
set { ... }
}
}
,然后让网页扩展此。
public partial class _Default : BasePage
{
}
如果值依赖于会话,那么这是实际运用简单HttpContext.Items词典:
将此代码放在在Global.asax来存储值:
Dim someValue As Integer = 5
Context.Items.Add("dataKey", someValue)
让与此代码retreive它在一个页面:
Dim someValue As Integer = CType(HttpContext.Current.Items("dataKey"), Integer)
下面是描述它更详细的链接:http://aspnet.4guysfromrolla.com/articles/060904-1.aspx
嘿,我弹出我stackoverflow.com樱桃!潜伏一个月后我的第一个答案。
要访问您的全局类中定义的属性,使用下列的:在一个HttpApplication和页类都定义
应用程序属性(如Page.Application [“TestItem”])
的HttpContext.ApplicationInstance属性(如HttpContext.Current.ApplicationInstance)
在上述任一情况,你可以在c作为全局类型的结果并访问您需要的属性。
在我用在Global.asax本身.NET 3.5的typeof(global_asax),并且工作得很好。而且,这里真正引导我的是实现DotNet OpenID示例。我改变了它的一些使用像Will建议的应用程序缓存。
您还可以使用以下语法:
((Global)HttpContext.Current.ApplicationInstance).Roles
对于项目的其他层,它是不可能有全球为一类:
dynamic roles= ((dynamic)System.Web.HttpContext.Current.ApplicationInstance).Roles;
if (roles!= null){
// my codes
}
只是我必须确保Global类中的角色属性不会更改。 另一种方式是通过反思。
对不起,我降低了你的帖子。正如我一直在想的那样,你是完全正确的。我想把我的投票转换成upvote,但是stackoverflow不会让我了。请接受我的感谢。 – minty 2008-10-31 16:02:12
@minty:只需点击突出显示的倒票,它就会撤消它。这可能会使你事后注册。 – 2008-10-31 16:24:08
这是一个好主意,但将属性值包装在一个属性中可以帮助防止未命中使用。当然,如果支持变量在会话中,那么您仍然需要担心人们直接访问它。 – Trisped 2012-04-12 01:08:54