【问题标题】:Efficient/Easy method to validate for empty text boxes?验证空文本框的有效/简单方法?
【发布时间】:2010-10-01 04:32:04
【问题描述】:

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

【问题讨论】:

  • 为什么你不能尝试使用RequiredFieldValidator
  • RequiredFieldValidators 也用于客户端代码。我也选择进行服务器端验证,因为 JavaScript 可以很容易地被禁用。

标签: c# asp.net validation textbox


【解决方案1】:

只需分别检查它们:

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 个文本框确实不是很多——明确检查每个文本框可以保持简单,并确保其他阅读您的代码的人知道发生了什么,而乱用集合则增加了另一层间接性,并且稍微有点调试起来不那么简单。

保持简单!

【讨论】:

  • 是的,我同意 7 个文本框并不多,并且按照自己的方式进行操作可以使代码保持简单。但是如果有 15-20 个文本框,这种方式有点笨拙......但是一页中有 15-20 个文本框又是一个糟糕的设计:S EDIT: 你的第二个解决方案看起来非常好:)
【解决方案2】:

我同意 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>

【讨论】:

  • 是的!我唯一担心的是有恶意的用户。除了我的RequiredFieldValidators 完美地执行他们的工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 2011-06-05
  • 2011-11-18
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多