到目前为止,我一直在使用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; }
}
}
}
答案 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之类的服务发送带有验证码的文本。让您的用户在随后的表单上确认该验证码,然后您会很高兴。
确认电话号码或电子邮件确实是唯一可以确保的方法,并且由于您似乎正在保留客户帐单信息,因此值得进行额外的工作。