想象我在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