Эффективный / простой метод для проверки пустых текстовых полей? - PullRequest
0 голосов
/ 01 октября 2010

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

Ответы [ 2 ]

4 голосов
/ 01 октября 2010

Просто отметьте их по отдельности:

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 голос
/ 01 октября 2010

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

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

Вы все еще хотите проверить на стороне сервера (в случае, если у них не включен 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...