是否可以驗證所提供的數據是否以電話號碼的形式並將其修剪爲驗證器中的數字?基於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