首页 / C# / C#-自定义验证器并指定消息类型
C#-自定义验证器并指定消息类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-自定义验证器并指定消息类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2527字,纯文字阅读大概需要4分钟。
内容图文
![C#-自定义验证器并指定消息类型](/upload/InfoBanner/zyjiaocheng/651/0cd158ea52d8403298a7a8b3be12ba1a.jpg)
我在企业验证块中有一个自定义验证. DoValidate方法如下所示.
protected override void DoValidate(Double objectToValidate,
object currentTarget, string key, ValidationResults validationResults)
{
if (!IsSalMoreThanMinWage(objectToValidate))
{
//Here I need to mark this message as a "Warning"
LogValidationResult(validationResults,
"Salary is too low for this state", currentTarget, key);
}
}
我需要将此验证失败标记为“警告”消息.在前端,当我遍历ValidationResults集合并获取ValidationResult对象时,我将需要标识和分组不同类型的消息并以不同的方式呈现它们.
我的问题是-如何将失败标记为警告?
解决方法:
您可以使用ValidationResult的Tag属性. “The meaning for a tag is determined by the client code consuming the ValidationResults.”
如果使用配置,则可以在配置文件中指定标签:
<validator lowerBound="0" lowerBoundType="Inclusive"
upperBound="255" upperBoundType="Inclusive" negated="false" messageTemplateResourceName="" messageTemplateResourceType=""
messageTemplate="Oops a warning occurred"
tag="Warning" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.StringLengthValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="My Validator" />
或使用属性设置标签:
[StringLengthValidator(5, 50, Ruleset = "RuleSetA", Tag="Warning")]
如果要以编程方式执行此操作,则由于Tag属性为只读,因此必须创建一个新的验证结果:
ValidationResults newResults = new ValidationResults();
foreach (ValidationResult vr in validationResults)
{
newResults.AddResult( new ValidationResult(
vr.Message, vr.Target, vr.Key, "Warning", vr.Validator, vr.NestedValidationResults ) );
}
然后,可以在前端检查ValidationResult的Tag属性以查看是否为警告:
foreach (ValidationResult vr in validationResults)
{
if (string.Compare(vr.Tag, "Warning") == 0)
{
DisplayWarning(vr.Message);
}
else
{
DisplayError(vr.Message);
}
}
显然,您可以更好地对此进行抽象,汇总错误和警告等.
更新
我们没有与您相同的要求,但我们做了类似的事情.不幸的是,我知道执行您所讨论的条件验证类型的唯一方法是使用RuleSets.
我们要做的是为RuleSet使用命名约定,并在运行时构造RuleSet名称.如果RuleSet存在,则我们运行验证器.您可以为警告做类似的事情.因此,您可以拥有两个规则集:
> RuleSet_Salary_Update
> RuleSet_Salary_Update_Warning
然后根据是否要运行警告验证来检索验证者列表:
public static List<Validator<T>> CreateValidators<T>(bool shoulIncludeWarning, RuleSetType rulesetType)
{
if (shouldIncludeWarning)
{
// Get warning validator if any
}
// Get Default validator (if any)
}
RuleSetType是具有不同类型规则的枚举(例如,Select,Insert,Update,Delete,PrimaryKey等).
内容总结
以上是互联网集市为您收集整理的C#-自定义验证器并指定消息类型全部内容,希望文章能够帮你解决C#-自定义验证器并指定消息类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。