多个if条件检查单击按钮

时间:2011-12-24 04:50:49

标签: c#

我的C#代码如下所示。

    if(TextBox1.Text.Length > 5)
    {
    if(TextBox2.Text.Length > 5)
    {
    if(TextBox3.Text.Length > 5)
    {
    if(TextBox4.Text.Length > 5)
    {
    //Action to pass to the next stage.
    }
    else
    {
    error4.text = "Textbox4 value should be minimum of 5 characters.";
    }
    }
    else
    {
    error3.text = "Textbox3 value should be minimum of 5 characters.";
    }
    }

else
{
error2.text = "Textbox2 value should be minimum of 5 characters.";
}
}
else
{
error1.text = "Textbox1 value should be minimum of 5 characters.";
}

1)在上述样品中。我正在使用嵌套的If-Else概念,其中按钮单击,如果TextBox1值小于5则移动到else部分并显示error1值但不会检查是否有其他错误。

2)如果我改变条件如果条件一步一步如果条件那么它对我不起作用,因为只有在所有IF条件满足时才必须完成动作。

3)如果我使用&&操作员检查所有条件我不会对每个“错误标签”

产生个别错误

如何通过单击按钮检查多个IF条件?

我的原始代码

if (checkavail == "available")
        {
            if (name.Text.Length > 0)
            {
                if (email.Text.Length > 5)
                {
                    if (password1.Text.Length > 7 && password1.Text == password2.Text)
                    {
                        if (alternate.Text.Contains("@") && alternate.Text.Contains("."))
                        {
                            if (question.Text.Length > 0)
                            {
                                if (answer.Text.Length > 0)
                                {
                                    Response.Redirect("next_page.aspx");
                                }
                                else
                                {
                                    error5.Text = "Please enter your security answer";
                                }
                            }
                            else
                            {
                                error4.Text = "Please enter your security question";
                            }
                        }
                        else
                        {
                            error3.Text = "Invaild alternate email address";
                        }
                    }
                    else
                    {
                        error2.Text = "Password should be minimum 8 characters and must match confirm password";
                    }
                }
                else
                {
                    error1.Text = "Email address should be minimum 6 characters";
                }
            }
            else
            {
                error.Text = "Please enter your name";
            }
        }
        else
        {
            error1.Text = "This email address is already taken. Please try another";
        }

我需要在满足所有条件时完成重定向操作。如果发现多个错误,则每个错误都应该收到每个错误消息。

2 个答案:

答案 0 :(得分:2)

创建一个只处理错误消息的函数。从此函数返回一个Enumerable。然后你可以像这样格式化你的if语句,它将返回一个Enumerable:

private IEnumerable GetErrors()
{
    if (TextBox1.Text.Length > 5) { yield return "Textbox1 minimum bla bla"; }
    if (TextBox2.Text.Length > 5) { yield return "Textbox2 minimum bla bla"; }
    if (TextBox3.Text.Length > 5) { yield return "Textbox3 minimum bla bla"; }
}

创建另一个处理非错误消息逻辑的函数,并执行if语句以查看是否存在零错误:

public void DoSomething()
{
    var errors = GetErrors();
    if (errors.Count == 0)
        Response.Redirect("next_page.aspx");
    else
        error.Text = "Please fix your errors";
}

答案 1 :(得分:2)

感谢所有人。我以下面的方式找到了答案

string p1, p2, p3, p4;
        if (TextBox1.Text.Length > 5)
        {
            p1 = "pass";
            Label1.Text = "";
        }
        else
        {
            Label1.Text = "Textbox1 value should be minimum 5 characters.";
            p1 = "fail";
        }
        if (TextBox2.Text.Length > 5)
        {
            p2 = "pass";
            Label2.Text = "";
        }
        else
        {
            Label2.Text = "Textbox2 value should be minimum 5 characters.";
            p2 = "fail";
        }
        if (TextBox3.Text.Length > 5)
        {
            p3 = "pass";
            Label3.Text = "";
        }
        else
        {
            Label3.Text = "Textbox3 value should be minimum 5 characters.";
            p3 = "fail";
        }
        if (TextBox4.Text.Length > 5)
        {
            p4 = "pass";
            Label4.Text = "";
        }
        else
        {
            Label4.Text = "Textbox4 value should be minimum 5 characters.";
            p4 = "fail";
        }
        if (p1 == "pass" && p2 == "pass" && p3 == "pass" && p4 == "pass")
        {
            Status.Text = "All pass";
        }