Laden...

ASP.NET MVC 4 und JQuery Form Validierung

Erstellt von Noodles vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.426 Views
N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 12 Jahren
ASP.NET MVC 4 und JQuery Form Validierung

Hallo,

ich möchte ein Formular clientseitig validieren und nur im gültigen Fall ein Post zum Server erlauben. Dieser Code funktioniert in einem MVC 3 Projekt, allerdings nicht mit MVC 4. Hat einer eine Idee und Kenntnisse darüber, dass evtl. noch ein Bug in der MVC 4 Preview vorliegt?

Model:

public class ContactModel
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
}

Javascript:


<script type="text/javascript">
    $(function () {
        $('form').submit(function (e) {
            e.preventDefault();
            if($('#myform').valid() ) {
               alert('valid');
            }
            else {
                alert('invalid');
            }
        });
});
</script>

Form:

<form action="@Url.Action("MyAction")" method="post" id="myform">
    @Html.ValidationSummary(false, "Fehler...")
    <p>
        <span class="label">Vorname:</span>
        <span>
            @Html.TextBoxFor(m => m.FirstName)
            @Html.ValidationMessageFor(m => m.FirstName)
        </span>
    </p>
    <p>
        <span class="label">Nachname:</span>
        <span>
            @Html.TextBoxFor(m => m.LastName)
            @Html.ValidationMessageFor(m => m.LastName)
        </span>
    </p>
</form>
16.841 Beiträge seit 2008
vor 12 Jahren

Was heißt "funktioniert" nicht?

Was sagt Firebug? Was sagt der Javascript Debugger?
Gibt's irgendwelche Bug-Meldungen in der MVC4 List?

Ich hab jetzt schon von mehreren Problemen im MVC4 gelesen, weshalb ich es auch nicht nicht genutzt habe, da es anscheinend wirklich noch eine richtige Preview ist.

Zu Deinem Form-Validieren: MVC4 wird hier auch verstärkt auf HTML 5 setzen, das eine Form-Validierung in der Definition hat. Diese sind in den HtmlHelpern aber bislang nicht enthalten. Logische Abhängigkeiten sollten sowieso nur Server-seitig validiert werden.

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 12 Jahren

Funktioniert nicht heißt, dass die Form immer valid ist, auch wenn ich nichts ausfülle. Firebug sagt gar nichts, keine Meldung. Im MVC 3 wird die Form richtig validiert, nämlich als invalid, da ja nichts aufgefüllt ist, somit wird ein unnötiger Post verhindert.

16.841 Beiträge seit 2008
vor 12 Jahren

Firebug meldet aber, ob das Javascript bereits ungültig ist. Wenn ja, wird nämlich die Form ohne Prüfung abgesendet.
Ich glaube auch nicht, dass valid() eine jQuery Methode ist, sondern viele eher von diesen "tollen" jQuery-Erweiterungen von MS, die mit MVC4 mitgeliefert und via

    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

aktiviert werden.

Verwende lieber die HTML5 Validierungen - in diesem Fall required - anstatt die MVC-Clientvalidierung, die sowieso nur bei jedem Release (alle 2 Jahre) gepflegt werden.

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 12 Jahren

Wie gesagt, Firbug meldet nix!
Diese Methode kommt auch nicht von MS: http://docs.jquery.com/Plugins/Validation/valid
Trotzdem Danke...

16.841 Beiträge seit 2008
vor 12 Jahren

In dem Beispiel is ein validate(), das ich bei Dir nicht sehe. Steht aber klar dran, dass dieses von Nöten ist, bevor eine Validierung ausgeführt wird.

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 12 Jahren

Auch das ändert nichts... Sowas teste ich dann doch von allein. Danke trotzdem...