我有一个Web应用程序,它有大约50个或更多字段分成几个面板,我在asp:wizard
中跨越几个步骤使用它们。在表单的最后,我想根据用户请求创建一个“这就是你要求的Label1.text ....”而无需重新创建多个标签并将每个框的文本绑定到manualy标签。以下是我尝试调用表单中非空的文本框列表,但由于感叹号而引发异常。
var requested = this.Controls.OfType<TextBox>()
.Where(txt => string.!IsNullOrWhiteSpace(txt.Text));
foreach (var textBox in requested)
{
Response.Write(requested);
}
答案 0 :(得分:4)
这是因为这是无效的语法 - 你想调用string.IsNullOrWhiteSpace
并反转结果:
.Where(txt => !string.IsNullOrWhiteSpace(txt.Text))
目前你在方法调用的中间有!
,这是错误的。
(然后请注意,目前您正在尝试写出文本框本身 - 我怀疑您不想这样做。但是当您遇到语法错误时,您会发现它。)< / p>
答案 1 :(得分:1)
您需要使用!string.IsNullOrWhiteSpace(txt.Text)
代替string.!IsNullOrWhiteSpace(txt.Text)
string.!IsNullOrWhiteSpace(txt.Text)
是一种无效的语法,因此您会收到拼写错误
答案 2 :(得分:1)
你走在正确的轨道上。我会使用单个标签控件,而不是使用Response.Write(可能会变得混乱)。让我们叫出lblResult。
var sb = new StringBuilder();
foreach (var textBox in requested)
{
sb.Append(textBox.Text); //Add the text not the textbox
sb.Append("</br>"); //Add a line break to make it look pretty
}
lblResult.Text = sb.ToString();
请注意使用StringBuilder构建我们的结果字符串以提高性能。
您还需要根据其他答案修复您的Where子句:
Where(txt => !string.IsNullOrWhiteSpace(txt.Text))