美文网首页IT技术文技术文技术干货
使用验证块的属性-验证块属性定义及验证规则

使用验证块的属性-验证块属性定义及验证规则

作者: 华夏后裔 | 来源:发表于2018-09-21 11:00 被阅读0次

使用验证块的属性

验证属性(内置验证应用程序块属性和主题中描述的属性)可以用于各种目标,包括类、字段、属性、方法和(在有限情况下)参数。有关信息,请参见验证属性目标。还有一组属性允许您更改其他属性的行为。这些都是在验证修饰符属性中讨论的。还可以指定要在单独的元数据类中使用的属性。有关此问题的详细信息,请参阅。

使用验证块属性定义验证规则

可以在代码中包含验证应用程序块属性来定义规则集(在使用.NET数据注释属性时不能指定命名规则集)。这是使用配置或代码的另一种选择。如果不为属性验证规则指定名称,则它是默认规则集的一部分。下面的代码示例演示如何使用属性定义名为"RuleSetA"的规则集。

此代码定义了一个名为Customer的类,它包含许多属性,如FirstName和LastName。附加到这些属性的属性将它们与验证器相关联。例如,StringLengthValidator属性附加到FirstName属性,并将其与StringLengthValidator类关联。该属性包括两个构造函数参数,用于约束FirstName字段中包含的值的长度、一个指定要应用的规则集的参数和一个定义消息模板的参数。消息模板包含验证失败时返回的消息。验证属性的Ruleset参数指示应用程序块将使用"RuleSetA"而不是匿名的默认规则集。在本例中,ObjectValidator属性是"RuleSetA"规则集的一部分,并引用Address类的"RuleSetA"规则集。

using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;

using Microsoft.Practices.EnterpriseLibrary.Validation;

using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

public class Customer

{

private string firstName;

private string lastName;

private DateTime dateOfBirth;

private string email;

private Address address;

private int rewardPoints;

[StringLengthValidator(1, 50, Ruleset="RuleSetA",

MessageTemplate="First Name must be between 1 and 50 characters")]

public string FirstName

{

get { return firstName; }

set { firstName = value; }

}

[StringLengthValidator(1, 50, Ruleset = "RuleSetA",

MessageTemplate = "Last Name must be between 1 and 50 characters")]

public string LastName

{

get { return lastName; }

set { lastName = value; }

}

[RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18,

DateTimeUnit.Year, Ruleset="RuleSetA",

MessageTemplate="Must be 18 years or older.")]

public DateTime DateOfBirth

{

get { return dateOfBirth; }

set { dateOfBirth = value; }

}

[RegexValidator(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*",

Ruleset = "RuleSetA")]

public string Email

{

get { return email; }

set { email = value; }

}

[ObjectValidator("ValidAddress", Ruleset="RuleSetA")]

public Address Address

{

get { return address; }

set { address = value; }

}

[RangeValidator(0, RangeBoundaryType.Inclusive, 1000000,

RangeBoundaryType.Inclusive, Ruleset="RuleSetA",

MessageTemplate="Rewards points cannot exceed 1,000,000")]

public int RewardPoints

{

get { return rewardPoints; }

set { rewardPoints = value; }

}

}

验证属性目标

验证属性可以与各种目标一起使用。下表列出了目标,并描述了与属性关联的验证器的行为。

验证修饰符属性

验证修饰符属性允许您修改验证属性的行为。修饰符包括:

· ValidatorComposition

· IgnoreNulls

· HasSelfValidation

· SelfValidation

ValidatorComplace属性允许您将复合验证器作为属性提供。使用它,您可以覆盖在使用多个验证器属性时发生的默认行为。您可以指定CompantionType.AND或CompositionType.Or作为该属性的参数。默认的组合类型是和。默认行为与不使用属性相同。通常,当逻辑复杂且需要OR操作以及和操作时,可以使用和组合类型。

您可以在企业库配置、企业库验证应用程序块和数据分析的上下文中拥有复合验证器。当使用DataAnnoations属性时,复合验证器只能是一个隐式属性和属性的一个隐式验证器。对于验证应用程序块属性,复合验证器是由默认情况下使用属性的和属性组成的。可以通过ValidatorComplace属性更改复合验证器逻辑。

企业库配置不依赖属性。配置有自己的结构来组成验证器。将实际使用的验证器通过使用逻辑规则和规则将这三个来源的规则结合在一起。结果与每个源的验证器的组成方式无关。

如果正在检查的值为NULL,则IgnoreNulls属性将不调用其他验证器。下表显示了如何组合属性以实现配置规则集中使用和验证器的常用方法的一些示例。

HasSelfVal环流属性标记一个包含自验证逻辑的类。SelfVal环流属性标记该类中的自验证方法。有关更多信息,请参见。

相关文章

  • 使用验证块的属性-验证块属性定义及验证规则

    使用验证块的属性 验证属性(内置验证应用程序块属性和主题中描述的属性)可以用于各种目标,包括类、字段、属性、方法和...

  • laravel中遇到的问题

    1、关于自定义验证规则 在自定义验证规则中,如果自定义验证规则的名称使用了驼峰结构,例:'oldpassword'...

  • Element UI Form表单验证

    Form组件提供表单验证的功能,只需要通过rules属性传入约定的验证规则,并将Form-Item的prop属性设...

  • thinkphp5.1

    一、验证器 官方文档:验证器官方文档:验证场景 验证器定义 数据验证 批量验证 抛出验证异常 自定义验证规则

  • HTML5表单新验证

    表单新验证属性 表单新验证状态

  • 表单验证

    自动验证:通过对元素使用属性(如pattern)的方法,可以实现在表单提交时执行的自动验证功能。 取消验证: ①利...

  • 输入和验证

    输入和验证 [TOC] 1.使用Validate的子类定义规则 Users控制器: User验证器(验证器的名字要...

  • Yii2.0 rules验证规则大全

    required : 必须值验证属性 email : 邮箱验证 match : 正则验证 url : 网址 cap...

  • Yii2.0 rules验证规则大全

    required : 必须值验证属性 email : 邮箱验证 match : 正则验证 url : 网址 cap...

  • Vue Element Form组件v-for循环里的表单验证

    Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 ...

网友评论

    本文标题:使用验证块的属性-验证块属性定义及验证规则

    本文链接:https://www.haomeiwen.com/subject/yiranftx.html