不在以下代码中返回结果值。缺少什么

时间:2017-09-25 04:41:09

标签: c# asp.net

不在以下代码中返回结果。以下代码中缺少什么。 如果所有(下拉列表或文本框)控件都不为空,它应该返回true。 如果全部为空,则返回false。 我是c#的新手,所以请帮助。

    bool IsValidate(Control c,bool result)
    {
        foreach (Control x in c.Controls)
        {
            IsValidate(x,result);
        }
        if (c is DropDownList)
        {
            DropDownList d = (DropDownList)c;
            if (d.SelectedValue.Equals("0") || d.SelectedValue.Equals(""))
            {
                result = false;
            }
            else
            {
                result = true;
            }
        }
        if (c is TextBox)
        {
            TextBox t = (TextBox)c;

            if (t.Text.Equals(""))
            {
                result = false;
            }
            else
            { 
                result = true;
            }
        }
        return result;
}

1 个答案:

答案 0 :(得分:0)

验证失败后,您必须立即返回结果。您继续验证可能再次将结果变量设置为true的其他控件。我会稍微改变你的代码,这可能会有所帮助:

//You dont need another parameter
bool IsValidate(Control c)
{
    foreach (Control x in c.Controls)
    {
        var result = IsValidate(x);

        //Return instantly if validation failed
        if (!result) return false;
    }
    if (c is DropDownList)
    {
        DropDownList d = (DropDownList)c;
        return !(string.IsNullOrEmpty(d.SelectedValue) || d.SelectedValue.Equals("0"));
    }
    else if (c is TextBox)
        return !string.IsNullOrEmpty(((TextBox)c).Text);

    //Return true if control is neither a textbox or dropdownlist
    return true;
}