如何返回非空的表单对象作为收据?

时间:2013-10-02 18:54:09

标签: c# asp.net webforms

我有一个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);
    }

3 个答案:

答案 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))