2011-06-21 2 views
1

私は約1/2の時間にヒットしました。シナリオでは、ダイナミックスクリプトは文字列ビルダーに保存され、その文字列はセッションに表現が格納されます("string")。ユーザーがページ間を移動するときに、[セッションからの]スクリプトは"RegisterStartupScript"を使用して登録されます。スクリプトは、ページのPreRenderイベントに登録されます。だから私は離れて別のセッション変数を作成し、前の1つをクリアするオプションを排除btwページを移動中にこのスクリプトをクリアしたいと思います。それは、オーバーヘッド:(1つのページから離れて移動するときのセッションをクリアする方法

+0

解決策はありますか?私も同様の問題があります。 – CodeNinja

答えて

1

なぜあなたはセッションでこれを保管しているのですあなたがGET要求の間に、このスクリプトを維持する必要があるのですか?

だけポストバックがあなたがビューステートに格納することができ、関連している場合、これは場合にのみ、維持されます

この文字列をGETリクエストでも使用できるようにするには、スクリプトが生成されたページを識別する識別子を持つ別の変数を導入することが必要な場合があります。新しいスクリプトを生成する必要のある制御変数。

+0

なぜ、これをセッションに保存していますか?これらのスクリプトは、データベースのデータに基づいて動的に生成されます。このスクリプトは、Ajax編集、webserviceを使用して更新するためのgridview行に添付されています。私はViewStateの中に置くつもりはない。 3番目のオプションは新しいキーを生成することになります。BIG NO – Deeptechtons

+0

私は新しいキーを生成するべきではないと言っています。同じセッション変数にすべてのスクリプトを保存できますが、ページの識別子を含む単純なコントロール変数を追加するだけです。 – thekip

+0

これは私が今現在気にしていることですが、他のアイデアはありますか? – Deeptechtons

0

onUnload() JavaScriptを使用してAJAXサービスを呼び出すと、サーバー側のセッションがクリアされます。

+0

したがって、 'onUnLoad'は離れた場所でのナビゲーションまたはポストバック?? – Deeptechtons

0

ユーザーはページからどのようにナビゲートしていますか?ハイパーリンクの代わりにASP.NETボタンを使用することはできませんし、セッション変数をクリアしたらコードでリダイレクトを行いますか?

protected void btnDoSomething_Click(object sender, EventArgs e) 
{ 
    Session["Value"] = String.Empty; 
    Response.Redirect(strURL, false); 
} 

か、クエリ文字列に変数を追加し、ターゲットページのPage_Loadイベントでそれを確認することができます:私はまだコメントカント以来

Webform1.aspx?reset=true 
+0

リダイレクトはメニューで行います。 menuitemはポストバックをしませんが、私は離れてナビゲートするためにポストバックしたくありません。 – Deeptechtons

+0

メニュー項目にオプションを追加してQueryStringに表示され、Page_Loadイベントのセッション変数をリセットするのはどうでしょうか?ターゲットページの?あなたはそれをする方法を知っていますか? – 333Mhz

+0

あなただけのページとSEOの束を得たときに最高のアイデアではない重要です。 Winstonが感謝してくれた答えに感謝して、viewstateを使う以外の手段がないと思われます。ステートホルダーとしての別の変数[スクリプトの状態を保持しています] – Deeptechtons

0

、ONUNLOAD()を使用します。

完全なポストバックでも発生します。 Ajaxポストバックは火を消す!

必要なのは、必要なときだけセッションをクリアするというonUload関数内での保証です。ポストバックの前に変数isPostBackをtrueに設定すると、onUnloadは変数を認識し、doenstはセッションをクリアする要求を送信します。

関連する問題