我的网站内置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,那么它的效果非常好。
谢谢并感谢
答案 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;
}
请确保在每个案例之后中断,返回或继续,否则您将收到编译错误。默认情况也需要排在最后。