2010-10-01 27 views
0

我有大約6或7個文本框需要驗證,以確保它們不是空的服務器端代碼。所以我通常這樣做,檢查每個文本框1,以確保它們不是空的。有沒有其他有效的方法來做到這一點?我已經搜索過,並發現將所有文本框添加到列表中並使用每個文本框是一種更好的方法。有沒有其他方法可以實現這一目標?感謝名單很多提前:)高效/簡單的方法來驗證空文本框?

+0

爲什麼你不能與RequiredFieldValidator的嘗試 – anishMarokey 2010-10-01 04:38:22

+0

RequiredFieldValidators使用,以及在客戶端代碼。這是JavaScript可以很容易被禁用,我也選擇做服務器端驗證。 – 2010-10-01 04:40:44

回答

4

只是檢查它們各自單獨地:

if (string.IsNullOrEmpty(this.NameTextBox.Text) || 
    string.IsNullOrEmpty(this.AddressLine1TextBox.Text) || 
    // etc... 
    ) 
{ 
    // Handle me 
} 

或者可能:

void CheckTextBox(TextBox textBox) 
{ 
    if (textBox == null) 
    { 
     throw new ArgumentNullException("textBox"); 
    } 
    if (string.IsNullOrEmpty(textBox.Text)) 
    { 
     // Handle me 
    } 
} 

void Validate() 
{ 
    CheckTextBox(this.FirstNameTextBox); 
    CheckTextBox(this.AddressLine1TextBox); 
    CheckTextBox(this.AddressLine2TextBox); 
} 

7文本框確實不是很多 - 明確檢查每一個保持其簡單並確保其他人閱讀你的代碼知道發生了什麼,而混淆集合則增加了另一層間接尋址,並使調試稍微簡單一些。

保持簡單!

+1

是的,我同意7個文本框沒有那麼多,按照你的方式保持代碼簡單。但是如果有15到20個文本框,這種方式有點笨重......但是在一頁中15-20個文本框又是一個糟糕的設計:S'編輯:'你的第二個解決方案看起來非常好:) – 2010-10-01 04:38:10

1

我同意Kragen--由於所有的檢查,你的代碼可能看起來很「大」,但你確實正在編寫程序爲了驗證這些東西而需要做的事情,所以任何一種巧妙的方法都會減少你寫的代碼行數實際上不會加快事情的速度。

問題雖然:你必須驗證服務器上的文本框?如果您只驗證文本框不是空的,我建議使用客戶端驗證。這將節省您的服務器時間和帶寬,因爲您的用戶將不被允許將表單提交到您的服務器,直到他們的瀏覽器驗證它們不是空的。

您仍然希望在服務器端進行驗證(以防他們的瀏覽器未啓用JavaScript或嘗試某種惡意行爲)。

客戶端驗證的本機ASP.NET方式涉及向ASPX添加ASP.NET驗證標籤。其實很簡單。下面是MSDN上的例子: http://msdn.microsoft.com/en-us/library/aa479013.aspx#aspnet-validateaspnetservercontrols_topic3

我已經簡化他們的代碼有點滿足您的要求:

<form runat="server"> 
    <asp:TextBox id="TextBox1" runat="server" /> 
    <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="Name is required!" ControlToValidate="TextBox1" /> 

    <asp:TextBox id="TextBox2" runat="server" /> 
    <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="Address is required!" ControlToValidate="TextBox2" /> 

    <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button> 
</form> 
+0

是!我唯一關心的是有惡意的用戶。除了我的RequiredFieldValidators完美無缺地完成他們的工作:) – 2010-10-01 04:56:08