2013-10-02 81 views
0

我有一個網絡應用程序,有大約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); 
    } 

回答

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)) 
+0

你有'sb.Append(textbox.Text)'然後一個換行符...我會在那裏列出窗體上的所有文本框? – Skullomania

+0

循環遍歷你構建的Linq查詢並被稱爲'requested' –

+0

我想我看到你做了什麼......你忘了在sb.Append中使其他「B」大寫。 – Skullomania

1

您需要使用!string.IsNullOrWhiteSpace(txt.Text)代替string.!IsNullOrWhiteSpace(txt.Text)

string.!IsNullOrWhiteSpace(txt.Text)是無效的語法這樣你得到complitation錯誤

+0

,但將返回空的....我想退回沒有空 – Skullomania

+1

@Skullomania的那些, '!string.IsNullOrWhiteSpace(txt.Text)'將返回非空 – Satpal

4

這是因爲這是無效的語法 - 你要調用string.IsNullOrWhiteSpace和反轉的結果:

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

您目前已擁有!在方法調用的中間,這是什麼錯誤。 (然後請注意,目前您正在嘗試寫出文本框本身 - 我懷疑您不想這樣做,但是當您通過語法錯誤時您會發現這一點。)