Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查看任何文本框是否为空的最有效方法是C#_C#_Asp.net_Vb.net - Fatal编程技术网

查看任何文本框是否为空的最有效方法是C#

查看任何文本框是否为空的最有效方法是C#,c#,asp.net,vb.net,C#,Asp.net,Vb.net,我有一个可以有多个文本框的网络表单 假设3:txt1 txt2txt3 显然,我可以编写以下代码: bool atleastOneTextboxEmpty=false; If (txt1.Text.Tostring().Trim()=="") { atleastOneTextboxEmpty=true; } If (txt2.Text.Tostring().Trim()=="") { atleastOneTextboxEmpty=true; } If (txt3.Text.Tostring()

我有一个可以有多个文本框的网络表单

假设3:txt1 txt2txt3

显然,我可以编写以下代码:

bool atleastOneTextboxEmpty=false;

If (txt1.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
If (txt2.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
If (txt3.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
但我很确定有更好的方法来实现这一点(但到目前为止我还没有找到)

注:
在我的情况下,我不允许使用必需的字段验证器,表单可能有更多的文本框,其中一些文本框允许为空(因此我不能循环遍历所有表单文本框)。

Lambda way!第一部分
Me.Controls.OfType(Of TextBox)(
获取表单上的所有文本框,
Any
函数检查一个条件

Dim anyEmptyTBs = Me.Controls.OfType(Of TextBox)().Any(Function(tb) String.IsNullOrWhiteSpace(tb.Text))

创建文本框的集合/数组,然后可以执行以下操作:

var textBoxCollection = new[] { txt1, txt2, txt3 };

bool atleastOneTextboxEmpty = textBoxCollection
                                   .Any(t => String.IsNullOrWhiteSpace(t.Text));
上面将检查数组
textBoxCollection
中的所有文本框,并检查其中是否有一个值为空/仅空白

使用
String.IsNullOrWhiteSpace
而不是修剪并将值与空字符串进行比较。请记住,
String.IsNullOrWhiteSpace
可用于.Net framework 4.0或更高版本


另一个选项是将这些特定的文本框放在组控件中,如
面板
,然后可以使用

yourPanel.Controls.OfType<TextBox>().Any(.....
yourPanel.Controls.OfType().Any(。。。。。

您可以编写以下更简单的代码:

bool atleastOneTextboxEmpty =
  txt1.Text.Trim() == "" ||
  txt2.Text.Trim() == "" ||
  txt3.Text.Trim() == "";
您还可以将控件放入数组中,并检查是否有空控件:

bool atleastOneTextboxEmpty =
  new TextBox[] { txt1, txt2, txt3 }
  .Any(t => t.Text.Trim() == "");

您可以使用Repeater控件并在其内部定义一个文本框。在“代码隐藏”中,执行您所做的操作,但只做一个if语句,用控件中的ID更改文本框

是的,这是一个“小”改进。请看我的注释:我不完全熟悉您的代码,但我认为它会检查表单中的所有文本框。任务ion是如何以最有效的方式查看TextboxA、TextboxB和TextboxC是否为空的。@SNash,错过了您的注释。@SNash,修改了我的代码以仅验证所需的文本框。选项是创建这些文本框的数组/集合并对其进行迭代,如上面的代码所示