检查c#中至少一个文本框值不为null还是为零?

时间:2018-09-21 05:54:41

标签: c# webforms

我的页面上有多个TextBox。我想验证TextBox中至少一个asp.net webform的值是否不为null或0。

TextBox的ID是从txtvalue1txtvalue20。我手动尝试,但不是手动进行,因为循环可能是我认为的最佳选择。我怎么做?谢谢!

3 个答案:

答案 0 :(得分:1)

使用反射并执行类似的操作(未经测试)。

bool areOneOrMoreFieldsEmpty()
{
    var textboxControls = GetType().GetFields().Where(field => field.Name.StartsWith("txtvalue");

    foreach(var control in textboxControls)
    {
        var textValueProperty = control.GetProperty(nameof(TextBoxControl.Text));
        var stringValue = textValueProperty.GetValue(this, null) as string;       

        if (string.IsNullOrEmpty(stringValue) || stringValue == "0")
        {
              return false;
        }
    }
    return true;
}

答案 1 :(得分:1)

您可以使用customvalidator:

在.aspx中:

    <asp:TextBox ID="txt1" runat="server"></asp:TextBox>
<asp:CustomValidator runat="server" ErrorMessage="Text must not be null or 0" ControlToValidate="txt1" OnServerValidate="TextBoxValidate" ForeColor="Red"  />

<asp:TextBox ID="txt2" runat="server"></asp:TextBox>
<asp:CustomValidator runat="server" ErrorMessage="Text must not be null or 0" ControlToValidate="txt2" OnServerValidate="TextBoxValidate" ForeColor="Red" />

<asp:TextBox ID="txt3" runat="server"></asp:TextBox>
<asp:CustomValidator runat="server" ErrorMessage="Text must not be null or 0" ControlToValidate="txt3" OnServerValidate="TextBoxValidate" ForeColor="Red"/>

<asp:Button ID="btnDoSomething" runat="server" Text="Do something" OnClick="btnDoSomething_Click" />

在.cs中:

    protected void btnDoSomething_Click(object sender, EventArgs e)
{
    if (!Page.IsValid)
        return;

    //Do something
}

protected void TextBoxValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (args.Value != null && args.Value != "0");
}

答案 2 :(得分:0)

要遍历所有仅知道按钮名称的按钮,您将不得不使用反射,这可能很麻烦-但这是您可以研究的方向。

其他选项是具有可以迭代的集合:

Button[] myButtons = new Button[]{txtvalue1, ..., txtvalue20};

foreach(var button in myButtons)
{
    // do operations here..
}