是否可以验证所提供的数据是否以电话号码的形式并将其修剪为验证器中的数字?基于MVC .net批注的声明:从电话号码中删除破折号和圆括号
输入:(902)837-2832
输出:有效的:YES,9028372832
还是我必须将输入转化为唯一的数字格式事后?
是否可以验证所提供的数据是否以电话号码的形式并将其修剪为验证器中的数字?基于MVC .net批注的声明:从电话号码中删除破折号和圆括号
输入:(902)837-2832
输出:有效的:YES,9028372832
还是我必须将输入转化为唯一的数字格式事后?
属性添加到您的模型只返回被绑定到输入属性的简化版一个getter。将您的验证属性放在该属性上。
public string PhoneNumber {get;set;}
[Required(ErrorMessage="Phone number is required.")]
[RegularExpression(@"\d{10}", ErrorMessage="Phone number is invalid.")]
public string PhoneNumberValue
{
get
{
var temp = PhoneNumber
temp = Regex.Replace(temp, @"[^0-9]", "");
temp = temp.Length == 11 && temp.StartsWith("1")
? temp.Substring(1) : temp;
}
set
{
// I can't remember off the top of my head if MVC model
// binding requires a setter or not. If so, just leave this
// empty. Otherwise you can remove it entirely.
}
}
然后,在您的视图中,只呈现替代验证消息。
@Html.LabelFor(x=>x.PhoneNumber)
@Html.TextBoxFor(x=>x.PhoneNumber)
@Html.ValidationMessageFor(x=>x.PhoneNumberValue)
下面是一个例子,如何用正则表达式验证:
[Required(ErrorMessage="Phone Number is required")]
[RegularExpression("^(?([0-9]{3}))?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage="Not a valid number")]
public string PhoneNumber { get; set; }
我们可能会使用字符串的修剪方法来清洁手机号码,只得到数字。
char[] charsToTrim = { '(', ' ', ')', '-'};
string phoneNumber = "(123)-345-6789";
string result = banner.Trim(charsToTrim);
最后这里是一个职位,说明Enabling Validation using DataAnnotations in more detail
感谢您的支持。我的目标是将整个解决方案分离到一个地方。这并不完全让我在那里,但它会解决我认为的问题! – user321605
没问题。正如我在答复中提到并引用的,您可能想为您的案例创建一个特定的属性。正则表达式和修整逻辑的逻辑应该起作用。 –
这将工作。谢谢! – user321605