如何将不为 null 的表单对象作为收据返回

本文关键字:单对象 返回 表单 null | 更新日期: 2023-09-27 18:33:34

我有一个 Web 应用程序,它有大约 50 个或更多字段分成几个面板,我正在通过几个步骤在asp:wizard中使用它们。在表单的末尾,我想创建一个"这是您请求的 Label1.text...."根据用户要求的任何内容,无需重新创建多个标签并将每个框的文本绑定到手动标签。这是我尝试调用表单中不为 null 的文本框列表,但由于感叹号而引发异常。

var requested = this.Controls.OfType<TextBox>()
                          .Where(txt => string.!IsNullOrWhiteSpace(txt.Text));
    foreach (var textBox in requested)
    {
        Response.Write(requested);
    }

如何将不为 null 的表单对象作为收据返回

这是因为这是

无效的语法 - 你想调用string.IsNullOrWhiteSpace并反转结果:

.Where(txt => !string.IsNullOrWhiteSpace(txt.Text))

目前,您在方法调用过程中得到了!,这就是问题所在。

(请注意,目前您正在尝试写出文本框本身 - 我怀疑您不想这样做。但是当你克服了语法错误时,你会发现这一点。

你走在正确的轨道上。与其使用 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))
您需要

使用 !string.IsNullOrWhiteSpace(txt.Text) 而不是string.!IsNullOrWhiteSpace(txt.Text)

string.!IsNullOrWhiteSpace(txt.Text)是无效的语法,因此您会收到编译错误