Ich verwende Datenanmerkungen in meinem ASP.NET MVC4-Projekt, um clientseitige Validierung für E-Mail- und Telefonfelder durchzuführen. E-Mail ist erfolgreich in der Client-Validierung, aber Telefon nicht - es erlaubt mir ungültige Zeichen einzugeben und nur warnt mich auf Vorlage der Form (und nicht unmittelbar nach dem Zeichen eingegeben wird)E-Mail-Annotationsvalidierung funktioniert, aber Telefon nicht
Im Modell:
[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
[Display(Name = "Email")]
public string Email{ get; set; }
[Required(ErrorMessage = "Mobile is required")]
[DataType(DataType.PhoneNumber)]
[Phone]
[Display(Name = "Mobile number")]
public string Mobile { get; set; }
nach Ansicht ich glaube, ich bin die richtigen Skriptverweise einschließlich:
<script type="text/javascript" src="~/Scripts/jquery.validate.min.js" ></script
<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js" ></script>
..und mit hTML Helfern (ich verwende TextBoxFor anstatt EditorFor als ich Klassenattribut anwenden werde, die ich habe hier zur besseren Übersicht weggelassen)
@Html.LabelFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
@Html.TextBoxFor(model => model.Email, new { @type = "email" })
@Html.LabelFor(model => model.Mobile)
@Html.ValidationMessageFor(model => model.Mobile)
@Html.TextBoxFor(model => model.Mobile, new { @type = "phone" })
Was fehlt mir?
Vielleicht wäre es besser, das OP zu fragen (mit einem Kommentar), welcher Telefontyp verwendet wird; es könnte ein unterstützter Typ sein, in diesem Fall ist dies nicht die Antwort ... – einpoklum
@OzAnt - sagst du das anstelle von type = "phone" sollte ich neuen type = "tel" ?? –
@LiamWeston - Nicht genau: w3schools sagt HTML5 definiert einen Telefon-Eingangstyp mit type = tel, nicht Telefon, aber dieser Typ wird von keinem Browser unterstützt (wie ich denke, Telefonnummern sind in jedem Land anders). Daher sollten Sie Ihre Telefonnummer mit Ihrem eigenen Regex in Ihrem Modell überprüfen und auf die Client-Seite anwenden. Sieht so aus, als wäre es eher ein Hinweis, da das iPhone type = "tel" erkennt und die Tastatur komplett auf die Standard-Telefontastatur umstellt. Siehe [link] http://html5doctor.com/html5-forms-input-types/#input -tel – OzAnt