2011-07-22 4 views
1

私はいくつかのjavascriptを持っています。これは一定期間の非アクティブ時間の後にユーザーをログアウトさせるべきです。javascriptからLoginStatus.LoggingOutイベントハンドラを呼び出すことはできますか?

私は、LoginStatusオブジェクトの通常のLoggingOutイベントを処理するコードビハインドにイベントハンドラを持っていますが、JavaScriptから呼び出す方法はわかりません。

__doPostBackを使用して、リンクやボタンのClickイベントを処理するイベントハンドラを呼び出すことはできますが、LoginStatusオブジェクトでは機能しないようです。クリックイベント(here's the doc) - これは実際には通常のリンク/ボタンではありません。

これを処理する他の唯一の方法は、実際のログアウトボタン/リンクを作成し、LoginStatusイベントハンドラと同じことをする別のイベントハンドラを作成し、__doPostBackを使用してこの新しいコールを呼び出すことです。このアイデアは本当に好きではありません。

JavaScriptからLoggingOutイベントハンドラを呼び出せる方法はありますか?

ページ:

// html 
<asp:LoginStatus ID="loginstatus" runat="server" /> 
... 
// js 
function expireSession() { 
    __doPostBack('loginstatus', ''); // doesn't seem to work 
} 

背後にあるコード:

Protected Sub loginstatus_LoggingOut(ByVal sender...) Handles loginstatus.LoggingOut 
    Logout() // this is my own logout sub 
End Sub 
+0

それは普通のことだと、すべてのログアウトボタンを持つことが期待しますあなたがログインする必要があるサイトのページ。なぜあなたはそれを望んでいませんか? – NotMe

+0

LoginStatusコントロールには、ログアウトに使用されるログアウトリンクが表示されます。実際に貼り付けたコードには正しく機能するログアウトボタン/リンクが表示されます。しかし、私の問題は、javascriptが遠くに、そのリンク、またはむしろリンクのイベントハンドラをトリガしようとし、できないことです。ごめんなさい。 – parkker007

答えて

1

私はあなたが別のタクトを取ることをお勧めしたいです。

cookie/session/whateverをクリアして、ユーザーを通常のログインページにリダイレクトする「ログアウト」ページを作成します。タイマーが経過すると、javascriptをログアウトページにリダイレクトします。

+0

私は参照してください。答えをありがとう!しかし、私はまだjavascriptを使ってイベントハンドラにアクセスする方法があるのか​​どうか不思議です - あなたはボタンやリンクでそれを行うことができるので、何か方法が必要なように感じます。 – parkker007

+0

@ parkker007:確かに作成できますloginstatusコントロールから継承し、独自のボタンクリックイベントハンドラを追加する新しいコントロールです。 – NotMe

0

次の方法で、サーバー側で適切なJavaScriptを取得することができます。ClientScript.GetPostBackClientHyperlink(LoginStatus1.Controls[0], null)

しかし、レンダリングページClientScript.RegisterForEventValidation(LoginStatus1.Controls[0].UniqueID);でこのスクリプトを登録し忘れていない:

protected override void Render(System.Web.UI.HtmlTextWriter writer) 
{ 
    // required by ASP.NET to pass EnableEventValidation on page as our composed link 
    // will postback from other control not original LoginStatus 
    ClientScript.RegisterForEventValidation(LoginStatus1.Controls[0].UniqueID); 

    base.Render(writer); 
} 
関連する問題