2014-01-14 4 views
2

Я работаю над проектом eCommerce, который имеет панель администратора и торговые панели.ASP.net Change Password Validator

Я закончил программирование и теперь тестировал каждый отдельный файл aspx и cs вручную.

Проблема в том, что у меня есть функция смены пароля, связанная с сеансом и базой данных. Проблема в том, что у меня есть валидаторы в моем aspx-файле, но они не будут работать. Здесь мои коды;

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
    <asp:Panel ID="Panel1" runat="server" DefaultButton="btnChange"> 
     <div class="userForm"> 
      <div class="formTitle"> 
       Change Your Password 
      </div> 
      <div class="formContent"> 
       <asp:TextBox ID="txtPassword" placeholder="Type your new password" runat="server" TextMode="Password"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtPassword" 
        ErrorMessage="RequiredFieldValidator" ForeColor="Red" Display="Dynamic" ValidationGroup="signup">Enter a password</asp:RequiredFieldValidator> 
       <br /> 
       <asp:TextBox ID="txtAgainPassword" placeholder="Repeat your new password" runat="server" TextMode="Password"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" BorderColor="Red" 
        ControlToValidate="txtAgainPassword" Display="Dynamic" ErrorMessage="Enter password again." 
        ForeColor="Red" ValidationGroup="signup"></asp:RequiredFieldValidator> 
       <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="txtPassword" 
        ControlToValidate="txtAgainPassword" Display="Dynamic" ErrorMessage="Password don't match." 
        ForeColor="Red" ValidationGroup="signup"></asp:CompareValidator> 
       <br /> 
       <asp:Button ID="btnChange" runat="server" Text="Submit" OnClick="btnChange_Click" /> 
       <br /> 
       <asp:Label ID="lblError" Visible="False" ForeColor="Green" runat="server"></asp:Label></div> 
     </div> 
    </asp:Panel> 
</asp:Content> 

и .cs часть ниже

protected void btnChange_Click(object sender, EventArgs e) 
{ 
    using (ZirveMarketDBEntities context = new ZirveMarketDBEntities()) 
    { 
     // Atanan sessiona gore user bilgisini al - guvenlik icin onemli 
     int id = (int)Session["CustomerID"]; 
     Customer cust = context.Customers.Where(i => i.CustomerID == id).FirstOrDefault(); 

     cust.Password = txtPassword.Text; 
     context.SaveChanges(); 
    } 
    lblError.Visible = true; 
    lblError.Text = "Password successfully updated"; 
} 

Проблема в том, у меня есть 2 окна для нового пароля и введите новый пароль. Даже если они равны нулю, даже если они не совпадают, пароль все равно изменяется со значением первой части. Я не хочу запускать код на стороне сервера, если они не совпадают или не совпадают. Что я делаю не так? Помогает очень хорошо.

ответ

2

Добавить атрибут «ValidationGroup =» «» для кнопки btnChange.

Я бы также рекомендовал добавить ниже на событие щелчка (до что-нибудь еще) в случае Javascript отключен на клиенте:

Page.Validate("signup"); 

if (!Page.IsValid) 
{ 
    return; 
} 
+0

Ah , Как я мог пропустить это! Кажется, настало время сделать перерыв для меня :) Спасибо за ответ, я также рассмотрю вашу рекомендацию на каждой кнопке, которую я использую, спасибо! –

+0

Спасибо за это. По какой-то причине при использовании заполнителей w/asp TextBox элементы управления, требуемый валидатор не будет работать в IE9 и 8. Добавление этого кода в btn отправить событие исправлено. –

1

У вас есть группы проверки, указанные на валидаторах, но не на кнопке. Попробуйте добавить группу проверки на кнопку.

+0

Спасибо, сэр, я был настолько глуп, чтобы проверить там :) –