Вся моя проверка не работает - PullRequest
1 голос
/ 16 ноября 2011

Я уже писал о том, что часть моей проверки не работает.Мне пришлось переделать некоторый код, и теперь все это не работает.

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 ]

3 голосов
/ 16 ноября 2011

Обратите внимание, что ваша проверка - это просто установка фона текста и метки. Ничто в этом явно не сообщает приложению, что произошла ошибка и должна быть показана пользователю. Поэтому, когда код достигнет дна и нажмет Server.Transfer("frmPersonalVerified.aspx");, он с радостью перейдет на следующую страницу. Вам нужен какой-нибудь флаг, отмечающий, была ли проверка успешной или нет, прежде чем перейти на следующую страницу:

        //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.

Затем проверьте isValid, прежде чем перейти на следующую страницу:

        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");
        }
1 голос
/ 16 ноября 2011

Я бы предположил, что, возможно, вызов Trim() для результата объединения Null, которое может вернуть string.Empty, может быть проблемой.

Я бы вызвал Trim() в строке перед выполнением операции объединения.

Когда вы говорите «не работает», можете ли вы уточнить?Я хотел бы представить исключение, вы можете сообщить нам, какое из них?

РЕДАКТИРОВАТЬ: не видел нижнюю часть!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...