public interface IDataErrorInfo
{
string Error { get; }
string this[string columnName] { get; }
}
同样是针对上面演示的实例,现在我们对需要被验证的数据类型Person进行了重新定义。如下面的代码片断所示,我们让Person实现了IDataErrorInfo接口。在实现的索引中,我们将索引参数columnName视为属性名称,根据它按照上面的规则对相应的属性成员实施验证,并在验证失败的情况下返回相应的错误消息。在不对其他代码作任何改动的情况下,我们直接运行该程序并在输入不合法数据的情况下提交表单后依然会得到如图1所示的输出结果。
public class Person : IDataErrorInfo
{
[DisplayName("姓名")]
public string Name { get; set; }
[DisplayName("性别")]
public string Gender { get; set; }
[DisplayName("年龄")]
public int? Age { get; set; }
[ScaffoldColumn(false)]
public string Error { get; private set; }
public string this[string columnName]
{
get
{
switch (columnName)
{
case "Name":
{
if(string.IsNullOrEmpty(this.Name))
{
return "'姓名'是必需字段";
}
return null;
}
case "Gender":
{
if (string.IsNullOrEmpty(this.Gender))
{
return "'性别'是必需字段";
}
else if (!new string[] { "M", "F" }.Any(
g => string.Compare(this.Gender, g, true) == 0))
{
return "'性别'必须是'M','F'之一";
}
return null;
}
case "Age":
{
if (null == this.Age)
{
return "'年龄'是必需字段";
}
else if (this.Age > 25 || this.Age < 18)
{
return "'年龄'必须在18到25周岁之间";
}
return null;
}
default: return null;
}
}
}
}
以上就是采用4种不同的编程模式来进行针对绑定参数验证的实现代码,希望对大家的学习有所帮助。








