Validation du numéro de téléphone MVC
code 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>
C# Code
[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; }
j'essaie d'utiliser une expression régulière pour valider un numéro de téléphone et retourner une erreur lorsqu'un numéro de téléphone ou un numéro de téléphone non valide est soumis. Je me sens comme je suis très proche, mais ne peut pas obtenir que cela fonctionne.
la boîte de saisie n'affichera pas un message à l'utilisateur indiquant que le numéro de téléphone qui a été soumis n'est pas valide.
7 réponses
Modèle
[Required(ErrorMessage = "You must provide a phone number")]
[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; }
Vue:
@Html.LabelFor(model => model.PhoneNumber)
@Html.EditorFor(model => model.PhoneNumber)
@Html.ValidationMessageFor(model => model.PhoneNumber)
Vous n'avez pas de validateur sur la page. Ajoutez quelque chose comme ceci pour afficher le message de validation.
@Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
Essayez pour une simple expression régulière pour le Mobile N
[Required (ErrorMessage="Required")]
[RegularExpression(@"^(\d{10})$", ErrorMessage = "Wrong mobile")]
public string Mobile { get; set; }
ainsi que les réponses ci-dessus Essayez ceci pour la longueur min et max:
Modèle
[StringLength(13, MinimumLength=10)]
public string MobileNo { get; set; }
view
<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>
Pour afficher un numéro de téléphone avec (###) ###-#### format, vous pouvez créer un nouveau Helper HTML.
Utilisation
@Html.DisplayForPhone(item.Phone)
HtmlHelper Extension
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);
}
}
essaye ceci:
[DataType(DataType.PhoneNumber, ErrorMessage = "Provided phone number not valid")]
Ou vous pouvez utiliser JQuery - il suffit d'ajouter votre entrée à la catégorie "téléphone", et le mettez dans votre section de script:
$(".phone").keyup(function () {
$(this).val($(this).val().replace(/^(\d{3})(\d{3})(\d)+$/, "()-"));
il n'y a pas de message d'erreur mais vous pouvez voir que le numéro de téléphone n'est pas correctement formaté jusqu'à ce que vous ayez entré les dix chiffres.