0

提供されたデータが電話番号の形式であることを検証し、バリデーターの数字だけに切り詰めることは可能ですか?

入力: (902) 837-2832
出力:有効​​: はい、9028372832

それとも、事後に入力を数値のみの形式に変換する必要がありますか?

4

2 に答える 2

1

正規表現で検証する方法の例を次に示します。

 [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; }

文字列のTrimメソッドを使用して、電話番号をクリーンアップし、数字のみを取得する場合があります。

char[] charsToTrim = { '(', ' ', ')', '-'};
string phoneNumber = "(123)-345-6789";
string result = banner.Trim(charsToTrim);

最後に、DataAnnotationsを使用した検証の有効化について詳しく説明した投稿があります

于 2012-06-16T01:49:34.250 に答える
1

入力にバインドされているプロパティの簡素化されたバージョンを返すゲッターのみを使用して、モデルにプロパティを追加します。そのプロパティに検証属性を配置します。

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)
于 2012-06-16T02:28:02.610 に答える