不在以下代码中返回结果。以下代码中缺少什么。 如果所有(下拉列表或文本框)控件都不为空,它应该返回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;
}
答案 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;
}