可选字段规则的EntLib验证语法?

时间:2010-02-25 01:08:37

标签: vb.net enterprise-library validation

我有一个字段Address2,它是可选的。因此,如果它为null,则不应用验证规则。但是,如果存在值,则其长度不能超过255个字符。

我一直在玩弄:

<StringLengthValidator(0, RangeBoundaryType.Inclusive, 255, RangeBoundaryType.Inclusive, MessageTemplate:="Address 2 can be between 0 and 255 characters in length.", Ruleset:="MyRules")> _

但如果它不存在,我仍然会收到错误。

有什么建议吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

如果指定了值(包括空字符串)或字符串为空,则以下属性将要求字符串长度介于5到255个字符之间。

<ValidatorComposition(CompositionType.Or, Ruleset:="MyRules", MessageTemplate:="Address line 2 must be between 5 and 255 characters")> _
<StringLengthValidator(5, 255, Ruleset:="MyRules")> _
<NotNullValidator(Negated:=True, Ruleset:="MyRules")> _
Public Property Address2() As String


因此,除非Address2为空,否则所有Address2字符串必须介于5到255个字符之间。

答案 1 :(得分:0)

您应该使用IgnoreNullsAttribute

装饰该属性
<IgnoreNulls>
<StringLengthValidator(0, RangeBoundaryType.Inclusive, ... )>
public string Address2 { get; set; }