2013-05-08 124 views
0

这是一个很奇怪的场景,ASp.Net链接按钮单击事件不会触发,

想,我浏览我的网站,如“http://web.site.com”这种方式。我的网站完全显示了我的主页,在顶部的这个页面上,我使用了一个用户控件,并且此用户控件显示了一个注销链接按钮。

的情况下1: 当我在这种情况下那么它不发射单击此按钮,

案例2: 但是,如果我正确地打开我的网站,如“http://web.site.com/default.aspx”,那么其工作和解雇。

任何人都可以在此建议我吗?

下面的控制是在用户控制

<asp:linkbutton id="logoutLinkButton" runat="server" 
     onclick="logoutLinkButton_Click1">logout</asp:linkbutton> 

和链接按钮事件代码中使用是

protected void logoutLinkButton_Click1(object sender, EventArgs e) 
     { 
      var url = this.Request.RawUrl; 
      Authentication.Logout(); 
      Response.Redirect(url); 
     } 
+0

什么是你对那个按钮的代码? – Habib 2013-05-08 11:32:09

+0

检查注销链接。我想你没有使用登录状态控制。 – nunespascal 2013-05-08 11:32:51

+0

您设置了哪些网址链接? – Sudz 2013-05-08 11:33:28

回答

1

的问题是,你正在使用Request.RawUrl

的原始网址被定义为域 信息后面的URL部分。在URL字符串 http://www.contoso.com/articles/recent.aspx中,原始URL为 /articles/recent.aspx。原始URL包含查询字符串,如果存在 。

因此对于您的情况"http://web.site.com"RawUrl将是空的,因此不做任何事情。相反,你可以使用Request.Url.GetLeftPart(UriPartial.Authority)

protected void logoutLinkButton_Click1(object sender, EventArgs e) 
{ 
   var url = this.Request.Url.GetLeftPart(UriPartial.Authority); 
   Authentication.Logout(); 
   Response.Redirect(url);  
} 
+0

谢谢,我已经尝试过你的代码,但它不工作,即使我没有写过像“Response.Write(”Test“); ”但它也没有在这个简单的情况下被解雇,但如果我通过在网址上的de​​fault.aspx,然后在页面上写“Test”。 – 2013-05-08 11:56:44

+0

@Priyank,那很奇怪,你在你的代码里放了什么'Response.Write'。首先声明事件 – Habib 2013-05-08 12:00:29

+0

我只在我的点击事件中写了Response.Write声明。如果我没有使用default.aspx浏览我的网站,它不写我不想写default.aspx – 2013-05-08 12:03:03

0

尝试Request.URL' instead of Request.RawUrl`

+0

没有它仍然没有工作,即使我只写了“Response.write(”Test“)而不是所有的代码,然后不写在页面上。 – 2013-05-08 11:59:46

相关问题