2012-05-11 12 views
0

特定のオブジェクトデータを別の方法で表示するために異なるUserControlsをロードするReport.aspxページがあります。 UserControlsは、特定の操作メソッドをオーバーライドする同じ基本型クラスを継承します。私は各UserControlに対して特定のサービスクラスを使用して、オペレーションシグネチャとの特定のインターフェイスを実装するデータを取得します。ASP.NETはポストバックにUserControlとキャッシュデータを動的に追加します

実際のUserControlタイプをReport.aspxに戻してPanelControlにロードしてから、いくつかの引数に基づいてデータを取得するようにコントロールメソッドを呼び出します。

このUserControlは、動的な性質のためにすべてのポストバックに読み込まれる必要があります。他の解決方法が受け入れられます。すべてのポストバックで、DLを呼び出すBLからデータをロードする必要はありません。私は、あなたがデータを再度呼び出す必要がないことをBLに示すための解決策を見つけようとしています。他の問題(例えば、レポートファイルのダウンロード、印刷など)のためにポストバックするだけです。そして私はこれをBLレベルで、ASPXフロントエンドでは起こらないようにしたいと思います。これまでのところ、私はBLに何らかの理由でこれを知らせるべきだと思います(PostBackまたは!PostBack)。私はちょうど真、偽のパラメータを作成し、PostBackプロパティを渡すことができたと思います。

アイデア、アーキテクチャ、ベストプラクティスは大歓迎です。

答えて

0

if(!Page.IsPostback){....}の内部でBLを呼び出すロジックをラップしないのはなぜですか?

+0

これは、ビジネスレイヤ内eficientキャッシュ戦略をもたらさないであろう。私はBLで何かが起こる必要があります、おそらくCLなどを作成します。 –

0

「DLを呼び出すBLからデータを読み込む必要はありませんが、すべてのポストバックでステートメントを詳述できますか?」各ポストバックの間、ユーザーコントロールはASPNET Webページと同じライフサイクルを経るため、(最後のポストバックと同じデータであっても)表示するデータが必要です。どのようにそれを防ぐことができますか?

+0

それは正しいです、私が探しているもの、ポストバックに再度UserControlをロードして、データストアから再びデータをロードしないようにする方法です。基本的に現在の問題は、コントロールがプログラマチックにロードされているため、ポストバックごとに書き込まれる必要があるということです。つまり、データを再度ロードする必要があります。 –

0

.NET 4.0では、とても良い解決策がSystem.Runtime.Cachingであると判断しました。 あなたはそれを使用する必要があるすべてのレイヤーに対して非常にうまく動作します。

http://msdn.microsoft.com/en-us/library/dd985642

関連する問題