Проверьте, является ли хотя бы одно значение текстового поля не нулевым или нулевым в c #? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть несколько TextBox на моей странице.Я хочу проверить, если хотя бы одно значение TextBox не равно нулю или 0 в asp.net webform.

Идентификаторы TextBox имеют значения от txtvalue1 до txtvalue20.Я пробовал вручную, но вместо того, чтобы делать это вручную, я думаю, что зацикливание может быть лучшим вариантом.Как я могу это сделать?Спасибо!

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Используйте рефлексию и делайте что-то вроде этого (не проверено).

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;
}
0 голосов
/ 21 сентября 2018

Вы можете использовать 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");
}
0 голосов
/ 21 сентября 2018

Чтобы перебрать все кнопки, зная только их имена, вам придется использовать рефлексию, которая может быть громоздкой - но это одно направление, которое вы можете исследовать.

Другой вариант - иметь коллекцию, которую вы можете перебирать:

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

foreach(var button in myButtons)
{
    // do operations here..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...