2010-10-01 4 views
0

У меня есть 6 или 7 текстовых полей, которые необходимо проверить, чтобы убедиться, что они не пусты от кода на стороне сервера. Итак, как я обычно это делаю, проверьте каждое текстовое поле 1 на 1, чтобы убедиться, что они не пусты. Существуют ли другие эффективные методы для этого? Я искал SO и обнаружил, что добавление всех текстовых полей в список и использование для каждого из них - намного лучший метод. Есть ли другие способы, которыми это может быть достигнуто? Thanx много заранее :)Эффективный/простой способ проверки пустых текстовых полей?

+0

почему вы не можете попробовать с RequiredFieldValidator – anishMarokey

+0

RequiredFieldValidators используются также в стороне клиента кода. Дело в том, что JavaScript можно легко отключить, и я решил также выполнить проверку на стороне сервера. –

ответ

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 'EDIT:' Ваше второе решение выглядит очень хорошо :) –

1

Я согласен с Kragen - ваш код может выглядеть «большим» из-за всех проверок, но вы действительно пишете именно то, что программа должна делать, чтобы проверить эти вещи, поэтому любой вид умного подхода, который уменьшает количество строк кода, которые вы пишете, на самом деле не ускоряет работу.

Вопрос: вам нужно проверить текстовое поле на сервере? Если вы только подтверждаете, что текстовое поле не пустое, я бы предложил использовать проверку на стороне клиента. Это сэкономит вам время сервера и пропускную способность, так как вашему пользователю не будет разрешено отправлять форму на ваш сервер, пока их браузер не подтвердит, что они не пусты.

Вы все равно хотите проверить на стороне сервера (в случае, если в браузере они не включены JavaScript, или они пытаются совершить какое-либо вредоносное поведение).

Собственный способ проверки на стороне клиента ASP.NET включает добавление тега проверки ASP.NET в ваш ASPX. На самом деле это довольно легко. Вот пример на 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, выполняющих свою работу безупречно :) –

Смежные вопросы