Client-seitige Validierung in asp.net mvc

Ich bin ziemlich neu im asp.net MVC. Ich habe ein problem bei der Befestigung der client-Seite Fehler bei der Validierung die Validierung Zusammenfassung in MVC. Auf der client-Seite senden klicken Sie auf die Funktion, die validation-summary-errors div ist immer leer, auch wenn es Fehler bei der Validierung in form.

Lassen Sie mich im detail erklären, mit code-snippets.Das snippet, das ich habe ist mein Beispiel-Anwendung.

Habe ich aktiviert clientseitige Validierung in meiner Anwendung trhough web.config und enthalten die Standard-jquery-Validierungen Bibliothek in meinem layout-Seite.

@Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/jqueryval")

MVC-Ansicht

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()

    <fieldset>
        <legend>Registration Form</legend>
        <ol>
            <li>
                @Html.LabelFor(m => m.UserName)
                @Html.TextBoxFor(m => m.UserName)
            </li>
            <li>
                @Html.LabelFor(m => m.Password)
                @Html.PasswordFor(m => m.Password)
            </li>
            <li>
                @Html.LabelFor(m => m.ConfirmPassword)
                @Html.PasswordFor(m => m.ConfirmPassword)
            </li>
        </ol>
        <input type="submit" value="Register" id="btnSubmit" />
    </fieldset>
}

View-Modell ist unten

public class RegisterModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

Skript-Datei, die ich benutzt habe ist unten.

<script type="text/javascript">
    $(function () {
        $("#btnSubmit").click(function (e) {
            e.preventDefault();            
            var errorSummary = $('.validation-summary-errors');
            if (errorSummary.length == 0) {
                $('#listError').remove();
                $('<div class="validation-summary-errors"></div>').insertAfter($('.validation-summary-valid'));
                $(".validation-summary-errors").append("<ul id='listError'><li>You cannot enter more than 20 characters.</li></ul>");
            }
            else if (errorSummary.length == 1) {
                $('#listError').remove();
                $(".validation-summary-errors").append("<ul id='listError'><li>You cannot enter more than 20 characters.</li></ul>");
            }
            return false;
        });

    });

</script>

Wenn ich nicht jquery submit klicken Sie auf Funktion, funktioniert alles einwandfrei, wie erwartet. Modell valiadtions ausgelöst werden, in der client-Seite auf "Absenden" klicken.

Zusätzlich zu Modell-Validierungen ich habe auch einige jquery client-side Validierungen müssen angehängt werden, um bestehende Liste der Validierung Zusammenfassung. Aber die "validation-summary-errors" div ist immer leer submit-Klick-Funktion. Also jedes mal, wenn die $('.validation-summary-errors').Länge ist 0.

Kann mir jemand helfen zu verstehen, wohin gehe ich falsch?

Aktualisierten code

$(function () {
    $("#btnSubmit").click(function (e) {

        var IsValid = validateForms();
        if (!IsValid) {
            e.preventDefault();
        }
    });
});

function validateForms() {

    var blnValid = false;
    var valMsg = ValidateDynamicControls();

    if ($('#MemberForm').valid()) {
        $(".validation-summary-errors").empty();
        blnValid = true;
    }
    if (valMsg != '') {

        blnValid = false;
        var errorSummary = $('.validation-summary-errors')
        if (errorSummary.length == 1 && errorSummary[0].innerHTML != '' &&    errorSummary[0].innerHTML != undefined) {
            $(".validation-summary-errors ul").append(valMsg);
        } else {

            $('#listError').remove();
            $('<div class="validation-summary-errors"></div>').insertAfter($('.validation-summary-valid'));
            $(".validation-summary-errors").append("<ul id='listError'>" + valMsg + "</ul>");
        }
    }

    return blnValid;
}

function ValidateDynamicControls() {
    var strAliasValMsg = 'The string is not valid.';

    return strAliasValMsg;
}
  • Sie haben nie akzeptiert, eine Antwort auf Ihre Fragen? Das würde erklären, warum niemand auf der bit chomping, um Ihnen Antworten liefern...
  • Ich verstehe. Das ist mein Fehler. Vorwärts gehen , werden es nie tun.
InformationsquelleAutor user1081802 | 2013-11-26
Schreibe einen Kommentar