1

クラスで静的変数を宣言しましたが、使用後にクリアしたいと考えています。int型です。

また、ビューがアンロードされたときに呼び出されるコントローラー関数はありますか? そこで変数をクリアできるかもしれません。

さらに情報が必要な場合はお知らせください。
更新:
ビューからコントローラーに値を渡しています。今、私のコントローラーがこの値を持っているとき、私はそれを持続させたいと思っています。私は静的を使用しています。
今のところ、それは便利であることが証明されています。より良い解決策の提案を歓迎します。しかし、現在の質問の解決策を教えてください:)

4

3 に答える 3

2

静的変数をクリアする場合は、新しい値を割り当てます。

コントローラ アクションの前後に何かを実行する場合は、アクション フィルタを使用します。カスタム アクション フィルターを使用すると、次のメソッドをオーバーライドできます (そしてそこでロジックを実行できます)。

  • OnActionExecuting– コントローラー アクションが実行される前に呼び出されます。
  • OnActionExecuted– コントローラー アクションが実行された後に呼び出されます。
  • OnResultExecuting– コントローラー アクションの結果が実行される前に呼び出されます。
  • OnResultExecuted– コントローラー アクションの結果が実行された後に呼び出されます。
于 2012-11-19T09:56:27.680 に答える
1

Web アプリケーションのコンテキストで静的変数を使用しないことを強くお勧めします。多くのリクエストが異なるスレッドによって同時に処理される可能性があるため、「見つけにくい」バグにつながることに注意してください。

ThreadLocal<T>代わりにstaticを使用してください。

于 2012-11-19T10:09:27.573 に答える
0

このように、静的変数をセッションでラップして、セッションごとに異なる値を維持することもできます。

    public static Int32 MyInt
    {
        get
        {
            return (Int32)HttpContext.Current.Session["MyInt"];
        }
        set
        {
            HttpContext.Current.Session["MyInt"] = value;
        }
    }

これが値をクリアしたい理由である場合は、もうクリアする必要はありません。

于 2012-11-19T10:26:28.250 に答える