【问题标题】:EntLib validation syntax for optional field rules?可选字段规则的 EntLib 验证语法?
【发布时间】:2010-02-25 01:08:36
【问题描述】:

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

我一直在玩弄:

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

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

有什么建议吗?

谢谢。

【问题讨论】:

    标签: vb.net enterprise-library validation


    【解决方案1】:

    如果指定了值(包括空字符串)或字符串为空,则以下属性将要求字符串长度在 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 字符串必须在 5 到 255 个字符之间,除非 Address2 为空。

    【讨论】:

      【解决方案2】:

      您应该使用IgnoreNullsAttribute 来装饰该属性:

      <IgnoreNulls>
      <StringLengthValidator(0, RangeBoundaryType.Inclusive, ... )>
      public string Address2 { get; set; }
      

      【讨论】:

      • 仍然没有继续那个。如果 Address2 不为 null(或为空),则长度应在 5 到 255 个字符之间,这是我熟悉的,但不是适当的属性语法,因为 IgnoreNulls 不起作用。我在这里找到了一个讨论:codeplex.com/entlib/WorkItem/View.aspx?WorkItemId=8595 建议 IgnoreNullsOrEmpty。
      猜你喜欢
      • 2018-08-15
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多