2012-01-23 8 views
1

私たちのプロジェクトでは、ユーザーがページを出た後に何かを削除しています。これを行うためにwindow.unloadイベントを使用しています。window.onunloadでPostBackの値を調べるにはどうすればよいですか?

window.onunload = function() { 
    // delete something 
} 

我々は、一般的に私たちはPage.IsPostBackプロパティをチェックする必要がないていた、UpdatePanelの中​​linkbuttons..etcをボタンを使用しています。

今日、私たちはUpdatePanelからいくつかのボタンを使用したことを認識しましたが、この状況ではいくつかのエラーが発生しました。私たちは、私たちの方法を変更することを決めた私達のページの上部に、グローバル変数(偽のvar _isPostBack =)を定義した後:私は、Page_Loadの中g_isPostBackを設定

window.onunload = function() { 
    if (_isPostBack) { 
    _isPostBack = false; 
    return; 
    } 

    // delete something 
} 

Altoughtを、g_isPostBackは変更されませんでした。私は "RegisterClientScriptBlock"、 "RegisterOnSubmitStatement"と "RegisterStartupScript"メソッドを試しました。

if (IsPostBack) 
{ 
    Control c = MyClass.GetPostBackControl(this); 
    bool inUpdatePanel = ControlParentForUpdatePanel(c); 

    if (!inUpdatePanel) 
    { 
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), Guid.NewGuid().ToString(), "_isPostBack = true;", true); 
    } 
} 

は私を助けるために誰もがあるの...法がonunloadイベントの前に呼び出されたレジスタが、_isPostBackが起動していたonunloadイベント後に設定されたのですか?私はここに正しい軌道に乗っています願って

+0

変数 "g_isPostback"または単に "_isPostback"ですか? – kochobay

+0

sory my fault ...私はそれらを間違って書きました。それらはすべて "_isPostBack"です。 – ogun

+0

aunaxメソッドがajax投稿で呼び出されているかどうかはわかりません。 – kochobay

答えて

4

これはトリックです...

あなたのformタグにonSubmit検証属性を追加した場合:

<form id="form1" onsubmit="return yourPostBack()"> 

と独自の機能記述より:ページのロード中

function yourPostBack() 
{ 
    _isPostBack = true; 
    return true; 
} 

そして最後に:これで

if (IsPostBack) 
{ 
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), Guid.NewGuid().ToString(), "_isPostBack = false;", true); 
} 

あなたはそれがポストバックかどうか、window.onunloadで理解できます。

0

私は理解しているように、 ONUNLOADは()クライアント側、 であるため、サーバーが はあなたが何ができるかのオブジェクトがありません...です隠しフィールドに値を保存します。私はPHPを使用していたよう

は、あなたも、これはASP.NETにapplys場合はJavascriptの変数 いけないの値は知って埋め込むことができます。

<script language="javascript"> 
var MyServerVariable = "<?PHP echo MyServerVariable ?>" 
if(MyServerVariable == "Blah...") 
{ 
} 
</script> 

<script language="javascript"> 
var MyServerVariable = "VALUE" 
if(MyServerVariable == "Blah...") 
{ 
} 
</script> 

しかし、同じことに変換します< aspで行うことができます:Label/>、私は確信しています...

+0

はいサーバーの値をJavaScriptに埋め込むことはできますが、Asp.NETで "<%= IsPostBack%>"を実装すると常にfalseになります。 IsPostBackの値は、常にページが最初にロードされる間、falseです。 – ogun

+0

? –

関連する問題