2016-04-20 3 views
2

Я пытаюсь реализовать свой логин и выход на мою веб-страницу. Есть две панели, которые переключаются. При загрузке моей страницы панель выхода становится невидимой, поэтому пользователь может видеть только ссылку для входа. После входа в панель входа в систему становится невидимым, и панель выхода становится видимой, где для выхода из системы существует выход из системы. но кнопка выхода из системы не запускает событие клика. Это то, что я вижу в окне браузера в нижней части, когда я пытаюсь нажать на кнопку выхода из системы ссылку This is what i see in the browser window at the bottom when i try to click the logout link button Это мой ASPX PAGE-Logout linkbutton не запускает событие click

<div> 
<asp:Panel ID="LoginPanel" runat="server"> 
    <ul class="style1"> 
       <li>Username</li> 
       <li><asp:TextBox ID="LoginEmail" runat="server" Width="90%" placeholder="Email" class="form-control"></asp:TextBox></li> 

       <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Email Required" ControlToValidate="LoginEmail" ForeColor="#CC0000" Font-Italic="True"></asp:RequiredFieldValidator> 

       <li>Password</li> 
       <li><asp:TextBox ID="LoginPassword" runat="server" Width="90%" placeholder="Password" class="form-control" TextMode="Password"></asp:TextBox></li> 

       <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Password Required" ControlToValidate="LoginPassword" ForeColor="#CC0000" Font-Italic="True"></asp:RequiredFieldValidator> 

       <li><asp:Button ID="LoginButton" runat="server" Text="Login" class="btn btn-default" onclick="LoginButton_Click"/> 

       &nbsp;New User?<asp:HyperLink ID="new_user" runat="server" NavigateUrl="Registration.aspx">Register Here</asp:HyperLink></li> 
    </ul> 
</asp:Panel> 
<asp:Panel ID="LogoutPanel" runat="server"> 
       <asp:LinkButton ID="LogoutLink" runat="server" Text="Logout" 
        onclick="LogoutLink_Click" /> 
</asp:Panel> 
</div> 

Это мой CS code-

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data; 
using System.Configuration; 

public partial class UserMasterPage : System.Web.UI.MasterPage 
{ 
    ConnectionClass cl; 
    SqlDataReader dr; 
    string sql; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      LogoutPanel.Visible = false; 
      cl = new ConnectionClass(); 
     } 
    } 
    protected void LoginButton_Click(object sender, EventArgs e) 
    { 
     sql = "select Id, Email_, Password_, Block from MemberLogin where Email_='" + LoginEmail.Text + "'"; 
     cl = new ConnectionClass(); 
     cl.establishConnection(); 
     cl.createReaderCommand(sql); 
     dr = cl.executeReaderCommand(); 
     if (dr.HasRows) 
     { 
      if (LoginPassword.Text == dr["Password_"].ToString()) 
      { 
       if (dr["Block"].ToString() == "False") 
       { 
        Session["user"] = dr[0].ToString(); 
        LoginPanel.Visible = false; 
        LogoutPanel.Visible = true; 
        //Response.Write("login successful"); 
       } 
      } 
     } 
     cl.closeConnection(); 
    } 
    protected void LogoutLink_Click(object sender, EventArgs e) 
    { 
     Session.Abandon(); 
     Response.Redirect("AdminLogin.aspx"); 
    } 
} 

Этот находится на моей главной странице. Мне нужно решить эту проблему очень скоро. Пожалуйста, помогите мне с этим. Спасибо заранее.

ответ

3

Звонок __DoPostBackWithOptions, связанный с LinkButton, связан с наличием валидаторов на вашей странице. Установка CausesValidation в false бы заменить его на «обычный» __doPostBack:

<asp:LinkButton ID="LogoutLink" runat="server" CausesValidation="false" ... /> 

валидаторов, показанных в разметке, находящейся в панели с Visible = false, они не должны быть активными. Но поскольку я не вижу ничего другого, что могло бы предотвратить обратную передачу, выключение проверки для LinkButton, по крайней мере, устранило бы эту возможную причину.

Кстати, если у вас есть много элементов управления и валидаторов в вашей форме, вы можете рассмотреть их группировку с помощью групп проверки. Это позволит каждой кнопки (или другие элементы управления, вызывающие постбэк), чтобы вызвать только соответствующие валидаторы:

<asp:TextBox ID="txt1a" runat="server" ValidationGroup="Group1" /> 
<asp:RequiredFieldValidator ID="rfv1a" runat="server" ControlToValidate="txt1a" ValidationGroup="Group1" Text="*" ForeColor="Red" /> 
<asp:TextBox ID="txt1b" runat="server" ValidationGroup="Group1" /> 
<asp:RequiredFieldValidator ID="rfv1b" runat="server" ControlToValidate="txt1b" ValidationGroup="Group1" Text="*" ForeColor="Red" /> 
<asp:Button ID="btn1" runat="server" Text="Button1" ValidationGroup="Group1" /> 
<br /> 
<asp:TextBox ID="txt2a" runat="server" ValidationGroup="Group2" /> 
<asp:RequiredFieldValidator ID="rfv2a" runat="server" ControlToValidate="txt2a" ValidationGroup="Group2" Text="*" ForeColor="Red" /> 
<asp:TextBox ID="txt2b" runat="server" ValidationGroup="Group2" /> 
<asp:RequiredFieldValidator ID="rfv2b" runat="server" ControlToValidate="txt2b" ValidationGroup="Group2" Text="*" ForeColor="Red" /> 
<asp:Button ID="btn2" runat="server" Text="Button2" ValidationGroup="Group2" /> 

В приведенном выше примере, щелчок на btn1 вызовет постбэк даже если txt2a пуст, потому что они надевают» t относятся к группе проверки Group1.

+0

, который работал, но теперь каждая ссылка на моей странице не стреляет. И что же мне делать? добавить причину валидации для каждого элемента управления? их так много! –

+0

Один или несколько валидаторов должны быть активными и предотвратить обратную передачу. Чтобы найти «виновных», вы можете постепенно установить «Enabled =» false »на валидаторы в разметке до тех пор, пока не будет выполнена обратная связь. Затем вы можете решить, в каких ситуациях каждый из них должен быть включен или отключен (в коде), так что вам не нужно будет устанавливать 'CausesValidation =" false "' на всех ваших кнопках. С другой стороны, этот атрибут имеет смысл для элементов управления, которые явно не должны вызывать проверки, например, для выхода из системы LinkButton. – ConnorsFan

+0

спасибо @ConnorsFan –

Смежные вопросы