我有一个可以有多个文本框的网页表单。
让我们说3:txt1 txt2 txt3
显然我可以编写以下代码:
bool atleastOneTextboxEmpty=false;
If (txt1.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
If (txt2.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
If (txt3.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
但我非常确定有更好的方法可以做到这一点(但到目前为止我无法找到它)。
注意: 在我的情况下,我不允许使用必需的字段验证器,并且表单可能有更多的文本框,其中一些允许为空(因此我无法循环所有表单文本框)。
答案 0 :(得分:4)
Lambda方式!第一部分Me.Controls.OfType(Of TextBox)()
获取表单上的所有文本框,Any
函数检查条件。
Dim anyEmptyTBs = Me.Controls.OfType(Of TextBox)().Any(Function(tb) String.IsNullOrWhiteSpace(tb.Text))
答案 1 :(得分:4)
创建文本框的集合/数组,然后您可以执行以下操作:
var textBoxCollection = new[] { txt1, txt2, txt3 };
bool atleastOneTextboxEmpty = textBoxCollection
.Any(t => String.IsNullOrWhiteSpace(t.Text));
上面将检查数组textBoxCollection
中的所有文本框,并检查其中任何一个文本框是否只有空/空白值。
使用String.IsNullOrWhiteSpace
代替triming,而不是将值与空字符串进行比较。请记住,{。1}}可用于.Net framework 4.0或更高版本。
另一种选择是将这些特定的文本框放在像String.IsNullOrWhiteSpace
这样的组控件中,然后可以使用
Panel
答案 2 :(得分:2)
你可以写得那么简单:
bool atleastOneTextboxEmpty =
txt1.Text.Trim() == "" ||
txt2.Text.Trim() == "" ||
txt3.Text.Trim() == "";
您还可以将控件放在一个数组中,并检查是否为空:
bool atleastOneTextboxEmpty =
new TextBox[] { txt1, txt2, txt3 }
.Any(t => t.Text.Trim() == "");
答案 3 :(得分:0)
您可以使用Repeater控件并在其中定义TextBox。在后面的代码中,执行您所做的操作,但只需创建一个if语句,使用控件中的ID来修改文本框