代码之家  ›  专栏  ›  技术社区  ›  Ranhiru Jude Cooray

有效/简单的空文本框验证方法?

  •  0
  • Ranhiru Jude Cooray  · 技术社区  · 14 年前

    我有一个大约6或7个文本框需要验证,以确保它们不是空的服务器端代码。所以我通常的做法是,逐个检查每个文本框,确保它们不是空的。还有其他有效的方法吗?我搜索了这么多,发现将所有文本框添加到一个列表中并使用for-each是一个更好的方法。有没有其他方法可以做到这一点?提前很多时间:)

    2 回复  |  直到 14 年前
        1
  •  4
  •   Justin    14 年前

    只需逐个检查:

    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文本框其实并不是很多—显式地检查每个文本框可以使它保持简单,并确保其他阅读您的代码的人知道发生了什么,而乱搞集合则是添加了另一层间接寻址,使得调试稍微不那么简单。

    简单点!

        2
  •  1
  •   Stefan Mohr    14 年前

    我同意Kragen的观点-由于所有的检查,你的代码看起来可能“很大”,但你实际上是在写程序需要做什么来验证这些东西,所以任何减少你写的代码行数的聪明方法实际上都不会加快那么多。

    但问题是:您必须验证服务器上的文本框吗?如果您只是验证文本框不是空的,我建议使用客户端验证。这将为您节省服务器时间和带宽,因为在用户的浏览器验证表单不是空的之前,不允许用户将表单提交到服务器。

    您仍然希望在服务器端进行验证(以防他们的浏览器上没有启用JavaScript,或者他们正在尝试某种恶意行为)。

    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>