14

global.asax でプロパティが定義されているとします。

public List<string> Roles
{
    get
    {
        ...
    }
    set
    {
        ...
    }
}

別のページで値を使用したい。どのように私はそれを参照するのですか?

4

8 に答える 8

19

次のようにクラスにアクセスできます。

((Global)this.Context.ApplicationInstance).Roles
于 2008-10-30T22:39:29.253 に答える
3

それはセッションにのみ依存するように見えます-それでは、セッションをパラメーターとして取る静的メソッドのペアにしないのはなぜですか? 次に、ページから「Session」プロパティの値を渡すことができます。(もちろん、HttpApplication にアクセスできるものはすべて、その Session プロパティを参照できます。)

于 2008-10-30T22:35:17.827 に答える
2

これがすべてのページでアクセスする必要があるプロパティである場合は、他のすべてのページを拡張する基本ページを定義する方がよいかもしれません...

たとえば、デフォルトで

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
{
}
于 2008-10-30T22:38:59.067 に答える
1

ねえ、私は私のstackoverflow.comチェリーをポップしています! 1ヶ月潜伏した後の私の最初の答え。

Global クラスで定義されたプロパティにアクセスするには、次のいずれかを使用します。

  • HttpApplication クラスと Page クラスの両方で定義された Application プロパティ (例: Page.Application["TestItem"])

  • HttpContext.ApplicationInstance プロパティ (例: HttpContext.Current.ApplicationInstance)

これらのいずれかを使用して、結果を Global 型にキャストし、必要なプロパティにアクセスできます。

于 2008-10-30T22:49:56.890 に答える
1

次の構文も使用できます。

((Global)HttpContext.Current.ApplicationInstance).Roles
于 2010-12-16T12:49:48.777 に答える
0

On the global.asax itself for .net 3.5 I used typeof(global_asax) and that worked fine. And, what actually lead me here was implementing the DotNet OpenID examples. I changed some of it to use the Application cache like Will suggested.

于 2009-12-02T19:04:04.663 に答える
0

値がセッションに依存している場合、これは実際には HttpContext.Items ディクショナリを使用して簡単です。

次のコードを Global.asax に配置して、値を格納します。

Dim someValue As Integer = 5
Context.Items.Add("dataKey", someValue)

次のコードを使用して、ページで取得します。

Dim someValue As Integer = CType(HttpContext.Current.Items("dataKey"), Integer)

詳細については、次のリンクを参照してください: http://aspnet.4guysfromrolla.com/articles/060904-1.aspx

于 2008-10-30T22:45:18.990 に答える
0

グローバルをクラスとして持つことができないプロジェクトの他のレイヤーの場合:

dynamic roles= ((dynamic)System.Web.HttpContext.Current.ApplicationInstance).Roles;
if (roles!= null){
   // my codes
}

Global クラスの Roles プロパティが変更されないようにする必要があります。もう1つの方法は、反射によるものです。

于 2013-07-12T14:45:27.613 に答える