2011-11-16 7 views
1

유효성 검사 일부가 작동하지 않기 전에 게시했습니다. 몇 가지 코드를 다시 써야했고 이제는 모든 코드가 작동하지 않습니다.내 모든 유효성 검사가 작동하지 않습니다.

public partial class frmPersonnel : System.Web.UI.Page 
{ 
    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      //Checking validation for the text boxes 
      bool isValid = true; 

      if (string.IsNullOrEmpty((txtFirstName.Text ?? string.Empty).Trim())) 
      { 
       txtFirstName.BackColor = System.Drawing.Color.Yellow; 
       lblError.Text += "Please enter first name! <br />"; 
       isValid = false; 
      } 

      if (string.IsNullOrEmpty((txtLastName.Text ?? string.Empty).Trim())) 
      { 
       txtLastName.BackColor = System.Drawing.Color.Yellow; 
       lblError.Text += "Please enter last name! <br />"; 
       isValid = false; 
      } 
      if (string.IsNullOrEmpty((txtPayRate.Text ?? string.Empty).Trim())) 
      { 
       txtPayRate.BackColor = System.Drawing.Color.Yellow; 
       lblError.Text += "Please enter pay rate! <br />"; 
       isValid = false; 
      } 
      if (string.IsNullOrEmpty((txtStartDate.Text ?? string.Empty).Trim())) 
      { 
       txtStartDate.BackColor = System.Drawing.Color.Yellow; 
       lblError.Text += "Please enter start date! <br />"; 
       isValid = false; 
      } 
      if (string.IsNullOrEmpty((txtEndDate.Text ?? string.Empty).Trim())) 
      { 
       txtEndDate.BackColor = System.Drawing.Color.Yellow; 
       lblError.Text += "Please enter end date! <br />"; 
       isValid = false; 
      } 

      DateTime dt1; 
      DateTime dt2; 

      dt1 = DateTime.Parse(txtStartDate.Text); 
      dt2 = DateTime.Parse(txtEndDate.Text); 

      if (DateTime.Compare(dt1, dt2) > 0) 
      { 
       //Checking if the end date is greater than the start date 
       txtStartDate.BackColor = System.Drawing.Color.Yellow; 
       txtEndDate.BackColor = System.Drawing.Color.Yellow; 
       lblError.Text += "Start Date must not be greater than End Date! <br />"; 
      } 

      else 
       if (isValid) 
      { 
       //output information if correct validation 
       Session["txtFirstName"] = txtFirstName.Text; 
       Session["txtLastName"] = txtLastName.Text; 
       Session["txtPayRate"] = txtPayRate.Text; 
       Session["txtStartDate"] = txtStartDate.Text; 
       Session["txtEndDate"] = txtEndDate.Text; 
       Server.Transfer("frmPersonalVerified.aspx"); 
      } 
     } 
     catch (Exception) 
     { 

     } 
    } 
} 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="frmPersonnel.aspx.cs" Inherits="frmPersonnel" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div align="center"> 
    </div> 
    <asp:Panel ID="Panel1" runat="server" Height="250px" HorizontalAlign="Left" 
     Width="300px"> 
     <asp:Label ID="Label1" runat="server" Text="First Name:" Width="80px"></asp:Label> 
     <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox> 
     <br /> 
     <asp:Label ID="Label2" runat="server" Text="Last Name:" Width="80px"></asp:Label> 
     <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox> 
     <br /> 
     <asp:Label ID="Label3" runat="server" Text="Pay Rate:" Width="80px"></asp:Label> 
     <asp:TextBox ID="txtPayRate" runat="server"></asp:TextBox> 
     <br /> 
     <asp:Label ID="Label4" runat="server" Text="Start Date:" Width="80px"></asp:Label> 
     <asp:TextBox ID="txtStartDate" runat="server"></asp:TextBox> 
     <br /> 
     <asp:Label ID="Label5" runat="server" Text="End Date:" Width="80px"></asp:Label> 
     <asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox> 
     <br /> 
     <asp:Button ID="btnSubmit" runat="server" 
      PostBackUrl="~/frmPersonnalVerified.aspx" Text="Submit" 
      onclick="btnSubmit_Click" /> 
     <asp:Button ID="btnCancel" runat="server" Text="Cancel" /> 
     <br /> 
     <asp:Label ID="lblError" runat="server"></asp:Label> 
    </asp:Panel> 
    </form> 
</body> 
</html> 
+2

RequiredFieldValidators를 사용해 보셨습니까? – sq33G

+1

"작동하지 않음"을 정의하십시오. – mellamokb

+0

@mellamokb : 텍스트 상자를 비워두면 상자가 노란색으로 변하지 않습니다. – Mike

답변

3

유효성 검사는 텍스트 및 레이블 배경을 설정하는 것입니다. 오류가 발생하여 사용자에게 표시되어야한다는 것을 응용 프로그램에 명시 적으로 알려주지는 않습니다. 코드가 아래쪽에 도달하여 Server.Transfer("frmPersonalVerified.aspx");에 도달하면 행복하게 다음 페이지로 이동합니다.

 if (isValid) 
     { 
      //output information if correct validation 
      Session["txtFirstName"] = txtFirstName.Text; 
      Session["txtLastName"] = txtLastName.Text; 
      Session["txtPayRate"] = txtPayRate.Text; 
      Session["txtStartDate"] = txtStartDate.Text; 
      Session["txtEndDate"] = txtEndDate.Text; 
      Server.Transfer("frmPersonalVerified.aspx"); 
     } 
+0

내가 말하는 내용을 반영하기 위해 위의 코드를 변경했으나 작동하지 않습니다. 나는 그것을 올바르게 했는가? 감사합니다. – Mike

+0

그 'else'를 제거하면 내가 설명하려고하는 것이 있습니다. 질문에 대한 내 의견도 보셨나요? 디버깅하는 동안 코드에서 try ... catch를 제거해야합니다. 그렇지 않으면 자동으로 예외가 손실됩니다. 예외로 인해 코드 실행이 중단 될 수 있으므로 오류가 무엇인지 알 수 있도록 코드가 전달되도록하는 것이 중요합니다. – mellamokb

1

나는 아마도 추측 것 : 그런 다음 다음 페이지로 이동하기 전에 isValid을 확인

 //Checking validation for the text boxes 
     bool isValid = true; 
     if (string.IsNullOrEmpty((txtFirstName.Text ?? string.Empty).Trim())) 
     { 
      txtFirstName.BackColor = System.Drawing.Color.Yellow; 
      lblError.Text += "Please enter first name! <br />"; 
      isValid = false; 
     } 

     if (string.IsNullOrEmpty((txtLastName.Text ?? string.Empty).Trim())) 
     { 
      txtLastName.BackColor = System.Drawing.Color.Yellow; 
      lblError.Text += "Please enter last name! <br />"; 
      isValid = false; 
     } 
     // etc. 

: 당신은 당신이 다음 페이지로 이동하기 전에 검증이 성공 여부를 여부를 표시하는 플래그의 일종 필요 string.Empty을 반환 할 수있는 Null 병합 결과에 Trim()을 호출하는 것이 문제 일 수 있습니다.

병합을 수행하기 전에 문자열에 Trim()을 호출 할 것입니다.

'작동하지 않음'이라고 말하면 조금 더 명확히 할 수 있습니까? 나는 예외가 던져 졌다고 생각할 것이다.

편집 : 하단 섹션을 보지 못했습니다!

관련 문제