0

すべてのページが出力キャッシュされるサイトがあります。つまり、キャッシュはVaryByParam="*"を使用してaspxレベルで行われます。ここで、ギャラップコントロールを作成する必要があります。つまり、小さな「このサイトはどのように機能していますか?」次に、ユーザーが回答をクリックすると、結果が表示されます。

ギャラップは、マスターページに追加されるユーザーコントロールとして実装されるため、cmsでギャラップが作成される任意のページにギャラップを追加できます。問題は、出力キャッシュがすべてのクリックを自然にキャッシュするため、ユーザーが2票を獲得しなかった場合、その選択肢の最初の投票後に計算された結果が表示されることです。

今、私はキャッシュ置換を使おうとしています。ユーザーコントロールがあった場所にasp:Substitionタグを追加し、コントロールを動的にロードしてレンダリングします(このアプローチhttp://coderwall.com/p/4ajzqqを使用)。問題は、投票によってトリガーされるポストバックが実行されないことです。どうやら、substitionコントロールが実行するメソッドは、ページのライフサイクル外にロードされているか、遅すぎます。

何か案は?

よろしく、マティアス

4

2 に答える 2

2

置換コントロールをスキップしてこれを解決し、ユーザーコントロールを通常どおり使用したため、ギャラップ/質問ビューは出力キャッシュされました。次に、追加した回答の選択肢のクリックハンドラーで Response.Cache.SetNoServerCaching(); 、結果ビューを出力キャッシュから除外したため、必要に応じて更新されました。

于 2012-09-13T11:39:52.823 に答える
0

VaryByCustom を使用して、Global.asax で Response.Cache.SetNoServerCaching() を使用することもできます。ページがポストバックかどうかを Global.asax で検出する必要があるだけです。コード例を次に示します

于 2015-06-12T19:50:23.747 に答える