0

約 50 以上のフィールドがいくつかのパネルに分割されている Web アプリケーションがあり、asp:wizardいくつかのステップでそれらを使用しています。フォームの最後に、いくつかのラベルを再作成したり、各ボックスのテキストを手動でラベルにバインドしたりせずに、ユーザーが要求したものに従って、「あなたが要求したものはここにあります」を作成したいと考えています。フォームでnullではないテキストボックスのリストを呼び出そうと試みたのは次のとおりですが、感嘆符のために例外がスローされます。

var requested = this.Controls.OfType<TextBox>()
                          .Where(txt => string.!IsNullOrWhiteSpace(txt.Text));

    foreach (var textBox in requested)
    {
        Response.Write(requested);
    }
4

3 に答える 3

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))
于 2013-10-02T18:59:32.183 に答える