如果条件,请检查多个asp.net文本框值

时间:2012-10-16 19:35:18

标签: c# .net-2.0 asp.net-2.0

我的网站内置ASP.NET 2.0和C#。我有一个名为tbCode的文本框,用户输入代码。我试图在按钮单击后检查后面的代码中的多个值输入的值。

到目前为止,这是我的标记。

 protected void btUpdate_Click(object sender, EventArgs e)
{


    if ((this.tbcode.Text.Trim().ToUpper() != "AB12") ||(this.tbcode.Text.Trim().ToUpper() != "DE14") || (this.tbcode.Text.Trim().ToUpper() != "XW16"))
    {
        lbmessage.Text = "Invalid Promo code. Please enter again";
    }
    else if ((this.tbcode.Text.Trim().ToUpper() == "AB12") || (this.tbcode.Text.Trim().ToUpper() == "DE14") || (this.tbcode.Text.Trim().ToUpper() == "XW16"))
    {
        Order.Shipping.Cost = 0;
        this.lShipping.Text = Order.Shipping.Cost.ToString("c");
        this.lSubtotal.Text = Order.Subtotal.ToString("c");
        this.lTotal.Text = Order.TotalCost.ToString("c");
        Order.PomoCode = this.tbcode.Text.Trim().ToUpper();
        lbmessage.Text = "Promo Code Applied.";
    }
    else
    {
        this.lShipping.Text = Order.Shipping.Cost.ToString("c");
        this.lSubtotal.Text = Order.Subtotal.ToString("c");
        this.lTotal.Text = Order.TotalCost.ToString("c");

    }

}

当我点击按钮时,它总是说无效代码。不确定我在哪里弄错了。如果我只检查一个值而不是3,那么它的效果非常好。

谢谢并感谢

4 个答案:

答案 0 :(得分:2)

这可能是您想要做的:

protected void btUpdate_Click(object sender, EventArgs e)
{
    string tbcodeValue = this.tbcode.Text.Trim().ToUpper();

    string[] validCodes = new string[] { "AB12", "DE14", "XW16" };
    if (!validCodes.Contains(tbcodeValue))
    {
        lbmessage.Text = "Invalid Promo code. Please enter again";
    }
    else 
    {
        Order.Shipping.Cost = 0;
        this.lShipping.Text = Order.Shipping.Cost.ToString("c");
        this.lSubtotal.Text = Order.Subtotal.ToString("c");
        this.lTotal.Text = Order.TotalCost.ToString("c");
        Order.PomoCode = tbcodeValue;
        lbmessage.Text = "Promo Code Applied.";
    }
}

首先,你在整个地方打电话给this.tbcode.Text.Trim().ToUpper()。这真的使你的代码变得混乱并且难以阅读。将其分配给变量不仅使代码更清晰,而且避免反复执行所有这些字符串操作函数。

接下来,您的意图似乎是,“如果文本框值不是这些值中的任何一个,请运行一些代码说它无效。最简单的方法是将所有有效值放入某种类型的容器,看它是否包含你感兴趣的值。你的下一个代码块基本上是“如果它是有效值之一”。所以如果它 包含字符串然后它是有效的。至于你的其他,我无法弄清楚它的意图是什么。字符串无效,或者它是有效的。我没有看到任何第三种情况,所以我只是删除它。

答案 1 :(得分:1)

您需要在第一个if语句中将||更改为&&'s。否则你总是会陷入那个障碍。

答案 2 :(得分:1)

试试这个:

 if ((this.tbcode.Text.Trim().ToUpper() != "AB12") && (this.tbcode.Text.Trim().ToUpper() != "DE14") && (this.tbcode.Text.Trim().ToUpper() != "XW16"))
    {
        lbmessage.Text = "Invalid Promo code. Please enter again";
    }
    else if ((this.tbcode.Text.Trim().ToUpper() == "AB12") || (this.tbcode.Text.Trim().ToUpper() == "DE14") || (this.tbcode.Text.Trim().ToUpper() == "XW16"))
    {
        Order.Shipping.Cost = 0;
        this.lShipping.Text = Order.Shipping.Cost.ToString("c");
        this.lSubtotal.Text = Order.Subtotal.ToString("c");
        this.lTotal.Text = Order.TotalCost.ToString("c");
        Order.PomoCode = this.tbcode.Text.Trim().ToUpper();
        lbmessage.Text = "Promo Code Applied.";
    }
    else
    {
        this.lShipping.Text = Order.Shipping.Cost.ToString("c");
        this.lSubtotal.Text = Order.Subtotal.ToString("c");
        this.lTotal.Text = Order.TotalCost.ToString("c");

    }

答案 3 :(得分:0)

您也可以使用开关;案例;块。

String testtext = this.tbcode.Text.Trim().ToUpper();

switch(testtext)
{
    case "AB12":
        // Do stuff for this case
        break;
    case "Text2":
        // Do stuff for this case
        break;
    default:
        // anything that fails all above tests goes here
        break;
}

请确保在每个案例之后中断,返回或继续,否则您将收到编译错误。默认情况也需要排在最后。