12 Stimmen

ASP.NET MVC-Client-seitige E-Mail-Validierung funktioniert nicht

In meinem Anmeldeformular möchte ich einige Client-seitige Validierungen mit MVC reguläre Ausdrücke setzen, aber es funktioniert nicht... Hier ist ein Teil des Codes des Modells

        [Required]
        [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address*")]
        public string Email { get; set; }

Aber die Nachricht will trotzdem nicht erscheinen... Was ist hier falsch?

EDITAR

In meiner Ansicht habe ich dies

            <div>
            <div class="editor-label">
                @Html.LabelFor(m => m.Email)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.Email)
                @Html.ValidationMessageFor(m => m.Email)
            </div>
            </div>

Und ich habe auch jQuery-Bibliotheken in mein Layout eingebunden

<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="stackoverflow.com/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="/Scripts/jquery.validate.min.js"></script>
    <script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
    @RenderSection("Head")
</head>

27voto

Chuck Norris Punkte 14766

Ich habe es endlich herausgefunden... Das Ersetzen des Required-Attributs nach dem RegularExpression-Attribut hat das Problem gelöst)))

Stattdessen diese

        [Required]
        [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]

        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address*")]
        public string Email { get; set; }

jetzt habe ich

        [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
        [Required]

        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address*")]
        public string Email { get; set; }

Und jetzt funktioniert es perfekt!

3voto

Russ Cam Punkte 120837

Sie benötigen außerdem

1. @Html.ValidationMessageFor(m => m.Email) in der Ansicht, in der die Nachricht erscheinen soll

2. die für die clientseitige Validierung erforderlichen JavaScript-Dateien einfügen. Wenn Sie eine unauffällige Validierung verwenden, wird dies

jQuery, 
jQuery validate, 
jQuery validate unobtrusive 

in dieser Reihenfolge.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X