Подтвердить что ты не робот

Проверка номера телефона MVC

Код MVC

 </ol>
    <ol class="row">
        <li class="cell" style="width: 20%;">Phone Number:</li>
        <li class="cell last" style="width: 60%;">
            @Html.TextBoxFor(model => model.PhoneNumber, new { @class = "textbox" }) @Html.ValidationMessageFor(model => model.PhoneNumber)
        </li>
    </ol>

Код С#

    [DataType(DataType.PhoneNumber)]
    [Display(Name = "Phone Number")]
    [Required(ErrorMessage = "Phone Number Required!")]
    [RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone format is not valid.")]
    public string PhoneNumber { get; set; }
    public string PolicyNumber { get; set; }
    public string AddressChangeType { get; set; }

Я пытаюсь использовать регулярное выражение для проверки номера телефона и возврата ошибки при отправке неверного номера или номера телефона. Я чувствую, что я очень близко, но не могу заставить это работать.

В поле ввода не отображается сообщение пользователю, указывающее, что номер телефона, который был отправлен, недействителен.

4b9b3361

Ответ 1

Model

[Required(ErrorMessage = "Your must provide a PhoneNumber")]
[Display(Name = "Home Phone")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid Phone number")]
public string PhoneNumber { get; set; }

Вид:

@Html.LabelFor(model => model.PhoneNumber)
@Html.EditorFor(model => model.PhoneNumber)
@Html.ValidationMessageFor(model => model.PhoneNumber)

Ответ 2

У вас нет валидатора на странице. Добавьте что-то вроде этого, чтобы отобразить сообщение проверки.

@Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })

Ответ 3

Наряду с приведенными выше ответами Попробуйте это для минимальной и максимальной длины:

В модели

[StringLength(13, MinimumLength=10)]
public string MobileNo { get; set; }

В поле зрения

 <div class="col-md-8">
           @Html.TextBoxFor(m => m.MobileNo, new { @class = "form-control" , type="phone"})
           @Html.ValidationMessageFor(m => m.MobileNo,"Invalid Number")
           @Html.CheckBoxFor(m => m.IsAgreeTerms, new {@checked="checked",style="display:none" })
  </div>

Ответ 4

Чтобы отобразить номер телефона с форматом (###) ### - ####, вы можете создать новый HtmlHelper.

Использование

@Html.DisplayForPhone(item.Phone)

Расширение HtmlHelper

public static class HtmlHelperExtensions
{
    public static HtmlString DisplayForPhone(this HtmlHelper helper, string phone)
    {
        if (phone == null)
        {
            return new HtmlString(string.Empty);
        }
        string formatted = phone;
        if (phone.Length == 10)
        {
            formatted = $"({phone.Substring(0,3)}) {phone.Substring(3,3)}-{phone.Substring(6,4)}";
        }
        else if (phone.Length == 7)
        {
            formatted = $"{phone.Substring(0,3)}-{phone.Substring(3,4)}";
        }
        string s = $"<a href='tel:{phone}'>{formatted}</a>";
        return new HtmlString(s);
    }
}

Ответ 5

Попробуйте простое регулярное выражение для Mobile No

[Required (ErrorMessage="Required")]
[RegularExpression(@"^(\d{10})$", ErrorMessage = "Wrong mobile")]
public string Mobile { get; set; }

Ответ 6

Попробуйте следующее:

[DataType(DataType.PhoneNumber, ErrorMessage = "Provided phone number not valid")]

Ответ 7

Или вы можете использовать JQuery - просто добавьте свое поле ввода в класс "phone" и поместите это в свой раздел script:

$(".phone").keyup(function () {
        $(this).val($(this).val().replace(/^(\d{3})(\d{3})(\d)+$/, "($1)$2-$3"));

Нет сообщения об ошибке, но вы можете видеть, что номер телефона не был правильно отформатирован, пока вы не ввели все десять цифр.