Eni*_*ate 1 c# asp.net validation enums
我有这些if-else语句,我无法重构.我已经使用它们在服务器端使用asp.net进行验证.
有人请建议减少这些陈述的方法吗?这里,验证字段和验证类型是enum列表.
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationFields.FO.ToString(), ValidationTypes.P.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationFields.FW.ToString(), ValidationTypes.P.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationFields.UF.ToString(), ValidationTypes.P.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationTypes.O.ToString(), ValidationTypes.P.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationTypes.W.ToString(), ValidationTypes.P.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationTypes.P.ToString(), ValidationTypes.C.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
else if (CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), ValidationTypes.C.ToString(), ValidationTypes.U.ToString()))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)
这是方法Checknextitem:
public static bool CheckNextItem(string Compareitem1, string comnpareitem2, string items1, string items2)
{
var listContains = Compareitem1 == items1 && comnpareitem2 != items2;
return listContains;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用这个代码
var invalidComparisons = new ValidationTypes[][] {
new[] { ValidationFields.FO, ValidationTypes.P },
new[] { ValidationFields.FW, ValidationTypes.P },
new[] { ValidationFields.UF, ValidationTypes.O },
new[] { ValidationTypes.O, ValidationTypes.P },
new[] { ValidationTypes.W, ValidationTypes.P },
new[] { ValidationTypes.P, ValidationTypes.C },
new[] { ValidationTypes.C, ValidationTypes.U },
};
Run Code Online (Sandbox Code Playgroud)
我得到编译时错误:"找不到隐式类型数组的最佳类型".
使用列表/数组存储要比较的验证类型:
var invalidComparisons = new string[][] {
new[] { ValidationFields.FO.ToString(), ValidationTypes.P.ToString() },
new[] { ValidationFields.FW.ToString(), ValidationTypes.P.ToString() },
new[] { ValidationFields.UF.ToString(), ValidationTypes.O.ToString() },
new[] { ValidationTypes.O.ToString(), ValidationTypes.P.ToString() },
new[] { ValidationTypes.W.ToString(), ValidationTypes.P.ToString() },
new[] { ValidationTypes.P.ToString(), ValidationTypes.C.ToString() },
new[] { ValidationTypes.C.ToString(), ValidationTypes.U.ToString() },
};
if (invalidComparisons.Any(x => CheckNextItem(ddlBr1Type.SelectedValue.ToString(), ddlBr2Type.SelectedValue.ToString(), x[0], x[1]))
{
BrkTypeValidator2.ErrorMessage = "'TOP0618 -Invalid combination of Bracket IDs'";
args.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |