SQL Plus点网-电话格式标记不起作用

时间:2019-02-17 04:16:14

标签: sql sql-server sql-plus-dot-net

到目前为止,我一直在使用SQL +点网并且确实很喜欢它,但是我在电话号码格式设置方面遇到了麻烦。使用以下代码:

--+SqlPlusRoutine
    --&Author=Vincent Grazapoli
    --&Comment=Inserts a new Customer Billing Record and returns the new CustomerBillingId
    --&SelectType=NonQuery
--+SqlPlusRoutine
CREATE PROCEDURE [dbo].[CustomerBillingInsert]
(
    @CustomerBillingId int output,

--+Required
    @CustomerId int,

--+Required
--+StringLength=8,64
--+Email
    @Email varchar(64),

--+Required
--+StringLength=16,20
--+CreditCard
    @CreditCard varchar(20),

--+Required
--+StringLength=10,16
--+Phone
    @Phone varchar(16),

--...
-- other parameters

电子邮件和信用卡标签可以正常工作,但是电话号码似乎只能阻止字母,并允许使用1234等数字。 我在做什么错了?

生成的代码如下:

    public class CustomerBillingInsertInput
        {
            [Required(AllowEmptyStrings = false)]
            public int? CustomerId { set; get; }

            [EmailAddress]
            [DataType(DataType.EmailAddress)]
            [Required(AllowEmptyStrings = false)]
            [StringLength(64, MinimumLength = 8)]
            public string Email { set; get; }

            [CreditCard]
            [DataType(DataType.CreditCard)]
            [Required(AllowEmptyStrings = false)]
            [StringLength(20, MinimumLength = 16)]
            public string CreditCard { set; get; }

            [Phone]
            [DataType(DataType.PhoneNumber)]
            [Required(AllowEmptyStrings = false)]
            [StringLength(16, MinimumLength = 10)]
            public string Phone { set; get; }

//Other properties

            /// <summary>
            /// Use this method to validate the instance.
            /// If the method returns false, the ValidationResults list will be populated.
            /// </summary>
            public bool IsValid()
            {
                ValidationResults = new List<ValidationResult>();
                return Validator.TryValidateObject(this, new ValidationContext(this), ValidationResults, true);
            }

            /// <summary>
            /// ValidationResults populated from the IsValid() call.
            /// </summary>
            public List<ValidationResult> ValidationResults{ set; get; }
        }
}
}

1 个答案:

答案 0 :(得分:2)

因此,我收到了sqlplus.net反馈的响应,他们给我的答案如下,即使您不使用sql + dot net,也可能会帮助某人。

-+ Phone标记正在执行预期的操作,但是,由于c#中的注释必须全局应用,因此它的逻辑非常宽松。对于您的情况,您可以执行以下任一操作: 像这样,将-+ RexExPattern标记与适当的补充标记一起用于错误消息。

--+Required
--+StringLength=10,16
--+Phone
--+RegExPattern=^[0-9]{10,12}$
    --&ErrorMessage=Phone is not a vaid format.
    @Phone varchar(16),

这将转换为以下数据注释。

[RegularExpression(@"^[0-9]{10,12}$",ErrorMessage = "Phone is not a vaid format.")]

或者,这是我的偏爱,让您的语义标签保持原样,并使用twilio之类的服务发送带有验证码的文本。让您的用户在随后的表单上确认该验证码,然后您会很高兴。

确认电话号码或电子邮件确实是唯一可以确保的方法,并且由于您似乎正在保留客户帐单信息,因此值得进行额外的工作。