Stellen Sie fest, ob die Seite in JavaScript - ASP.NET gültig ist

78

Wie kann am besten festgestellt werden, ob ein Formular auf einer ASPX-Seite in JavaScript gültig ist?

Ich versuche, die Validierung eines Benutzersteuerelements zu überprüfen, das mit JavaScript geöffnet wurde, window.showModalDialog()und die Überprüfung der Eigenschaft 'Page.IsValid' auf der Serverseite funktioniert nicht. Ich verwende ASP.NET-Validierungssteuerelemente für die Seitenvalidierung.

Michael Kniskern
quelle

Antworten:

173

Wenn ich eine Seite habe, die eine Reihe von ASP.NET-Validierungssteuerelementen verwendet, verwende ich Code, der dem folgenden ähnlich ist, um die Seite zu validieren. Rufen Sie eine Eingabe an. Hoffentlich können Sie mit diesem Codebeispiel loslegen!

    <input type="submit" value="Submit" onclick"ValidatePage();" />

    <script type="text/javascript">

    function ValidatePage() {

        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate();
        }

        if (Page_IsValid) {
            // do something
            alert('Page is valid!');                
        }
        else {
            // do something else
            alert('Page is not valid!');
        }
    }

</script>
aherrick
quelle
2
Sie antworten und lesen den folgenden Beitrag: speedreviews.com/forums/… hat mir geholfen, mein Problem zu lösen.
Michael Kniskern
1
Wie kann ich den obigen Code ändern, wenn ich mehrere Validierungsgruppen auf der Seite habe und nur überprüfen muss, ob eine einzelne Gruppe gültig ist?
Der Muffin-Mann
5
Update - Ich habe den Page_ClientValidate()Anruf entfernt und es funktioniert :)
The Muffin Man
Siehe auch stackoverflow.com/a/3062770/292060 für Argumente zu diesem Aufruf, die sich auf die mehreren Validierungsgruppen beziehen .
Goodeye
1
Du bist so großartig, aherrick. Vielen Dank.
Jonas T
10

Sie prüfen, Page.IsValidwo Sie suchen sollten Page_IsValid(es ist eine Variable, die von den .NET-Validatoren verfügbar gemacht wird) :)

Andrea
quelle
Ich habe vergessen zu erwähnen, dass ich die Page.IsValid-Eigenschaft auf der Serverseite überprüft habe, auf der sie nicht funktioniert hat.
Michael Kniskern
7

Die ASP.NET-Überprüfungssteuerelemente stellen eine clientseitige API bereit, die Sie mit Javascript verwenden können: http://msdn.microsoft.com/en-us/library/aa479045.aspx

Sie sollten in der Lage sein, das Page_IsValid-Objekt zu überprüfen, um festzustellen, ob eines der Validierungssteuerelemente ungültig ist.

Joshb
quelle
3
$("input[id$=Button2]").click(function () {
    var validated = Page_ClientValidate('repo');
    if (validated) {
        // JavaScript code.
    }
});
Agrawars
quelle
1

Sie können jQuery und das Validierungs- Plugin verwenden, um eine clientseitige Validierung durchzuführen. Dies funktioniert sowohl mit HTML-Tags als auch mit asp.net-Serversteuerelementen. Phil Haack hat ein gutes Beispielprojekt , das Ihnen die Grundlagen zeigt.

Diese SO-Frage enthält auch eine eingehende Überprüfung dieses Ansatzes.

David Robbins
quelle
1

Legen Sie die ValidationGroupEigenschaft für jedes asp.netValidator-Steuerelement auf Ihrer Seite fest. Sie müssen auf ValidationGroupeiner Seite denselben Namen angeben.

Zum Beispiel:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required" ValidationGroup="Validate"></asp:RequiredFieldValidator>
    <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" ValidationGroup="Validate"></asp:RangeValidator>
    <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ValidationGroup="Validate"></asp:CustomValidator>

Danach in Ihrem Javascript aufrufen wie Page_ClientValidate("ValidationGroup")

Zum Beispiel:

function ValidatePage(){
if(Page_ClientValidate("Validate")){ //validate using above validation controls group
      //validation return true section
}
else{
      //validation return false section
}
}
Biby Augustine
quelle