2015-07-20 15 views
0

我有一个注销按钮,它应该适用于3种不同的注销功能i.e- User logout,Logout from Facebook,Logout from Google。我正在解释我的代码以下3种注销功能。请帮我写所有内部点击事件。如何使用相同的注销按钮为3个不同的属性使用c#asp.net

我的注销按钮如下。

<li><a href="#" runat="server" onServerClick="fun_signout" id="sign_out">Sign Out</a></li> 

本地用户注销:

protected void fun_signout(object sender, EventArgs e) 
     { 
      Session.Remove("User_Email"); 
      Session.RemoveAll(); 
      Response.Redirect("UserLogin.aspx"); 
     } 

注销使用Facebook的:

protected void fun_signout(object sender, EventArgs e) 
     { 
      FaceBookConnect.Logout(Request.QueryString["code"]); 
     } 

对于谷歌,我使用JavaScript.So为我的退出按钮应该在下面。

<li><a href="#" target='myIFrame' onClientClick="myIFrame.location='https://www.google.com/accounts/Logout'; startLogoutPolling();return false;" id="sign_out" >Sign Out</a></li> 

从谷歌注销的代码解释如下。

<script type="text/javascript"> 
    function startLogoutPolling() { 
     window.location.href = "UserLogin.aspx"; 
     loggedIn = false; 
    } 
</script> 

这里我的要求是我想保持注销按钮相同并实现所有上述功能。请帮助我做到这一点。

+0

为什么不使用3个不同的按钮具有相同的设计,但不同的实现。只需隐藏并显示该按钮取决于登录标准? – Chris

+0

@Chris:是的,它也是非常好的主意,但这可能通过使用相同的按钮? – satya

+0

可能您可以创建一个可以指向不同方法的委托取决于登录的条件。 – Chris

回答

0

首先,使用服务器端ASP控件,如asp:Button。如果你接受,它会做一个回发(即使在谷歌退出),那么你可以这样做:

<asp:Button ID="bSignOut" runat="server" OnClick="bSignOut_Click" /> 

在Page_Load中,分配CommandName根据您的登录类型:

this.bSignOut.CommandName = "Regular"; // or "Google" or "Facebook" 

然后你事件中,你可以决定你要做的:

protected void bSignOut_Click(object sender, EventArgs e) 
{ 
    Button bSignOut = (Button)sender; 
    if(bSignOut.CommandName.Equals("Regular")) 
    { 
     Session.Remove("User_Email"); 
     Session.RemoveAll(); 
     Response.Redirect("UserLogin.aspx"); 
    } 
    else if(bSignOut.CommandName.Equals("Google")) 
    { 
     string script = "myIFrame.location='https://www.google.com/accounts/Logout'; startLogoutPolling();" 
     this.Page.ClientScript.RegisterStartupScript(this.GetType(), "GoogleSignOut", script, true); 
    } 
    else if(bSignOut.CommandName.Equals("Facebook")) 
    { 
     FaceBookConnect.Logout(Request.QueryString["code"]); 
    } 
} 

如果你不希望在谷歌的回传signout你没有选择,而不是创建第二个按钮,切换可见或附加次e JavaScript(包括return false)到Page_Load上的按钮。

+0

最初的浏览器会知道这是什么类型的登录? – satya

+0

@satya这是你的工作。一旦我进入你的页面,不要显示任何注销按钮。一旦我登录了任何东西,你必须在回发站上确定它。在“常规”上应该很容易。关于“Google”和“Facebook”,我从来没有实现过这些,所以我不能告诉你究竟如何。不过这是另一种类型的问题。 – modiX

相关问题