0

Ich habe ein ASP.NET Core 2.0-Projekt, wo ich das Formular-Tag für eine Einreichung verwenden. Jetzt möchte ich einige Client-Seite Validierung auf meinem Formular Vorlage hinzufügen. So verwende ich das onsubmit Tag auf meiner Form wie folgt aus:ASP.NET Core mit Formular-Tag - Validierung Formular onsubmit und Eingabe verhindern

<form id="formId" asp-action="ActionName" onsubmit="validationFunction(Event)"> 

und ich habe eine Funktion wie folgt aus:

function validationFunction(e) { 
    //CheckStuff 
    e.preventDefault(); 
} 

Nun, wenn ich mein Formular abgesendet haben, wird die Funktion ausgelöst richtig, aber die e.preventDefault() doesn Halte die Einreichung nicht ab. Noch tut return false.

Wie kann ich verhindern, dass meine Einreichung abgeschlossen wird?

PS. Ich weiß, dass ich den Fall wahrscheinlich mit dem Klick auf die Schaltfläche behandeln und mein Formular senden kann, wenn ich meine Validierung abgeschlossen habe, aber ich habe mich gefragt, warum das oben genannte nicht in ASP.NET Core funktioniert oder was fehlt mir?

+0

'asp-action' definiert die Controller-Aktion, an die das Formular gesendet werden soll, dies hat nichts mit JavaScript-Funktionen zu tun. – Jerodev

+0

@ Jerodev Sie haben Recht, es war ein Fehler von mir, als ich die Frage schrieb. Ich habe es korrigiert. –

Antwort

0

Das onsubmit Attribute sollte zurückgegeben werden und return false, um das Einreichen zu verhindern.

<form id="formId" asp-action="ActionName" onsubmit="return validationFunction(Event)"> 
+1

Ich weiß nicht, wer der Typ ist, der gerade in die Antwort kam und alles abwarf, aber ok, was soll ich sagen. Danke für die Antwort, es hat funktioniert und ich werde es akzeptieren. –

1

Wenn Sie wollen, es zu tun "richtigen" und einfachste Weg, die Validierung in der Klasse ex gesetzt:

public class Movie 
{ 
public int ID { get; set; } 

[StringLength(60, MinimumLength = 3)] 
[Required] 
public string Title { get; set; } 

[Display(Name = "Release Date")] 
[DataType(DataType.Date)] 
public DateTime ReleaseDate { get; set; } 

[Range(1, 100)] 
[DataType(DataType.Currency)] 
public decimal Price { get; set; } 

[RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")] 
[Required] 
[StringLength(30)] 
public string Genre { get; set; } 

[RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")] 
[StringLength(5)] 
[Required] 
public string Rating { get; set; } 
} 

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/validation

Oder mit JavaScript und sogar HTML

+0

Dies würde bedeuten, dass das OP die von asp.net bereitgestellten Validierungen verwendet. OP schreibt eindeutig seine eigenen Funktionen – Jerodev

+0

Ihr Recht ich habe einen JavaScript-Link hinzugefügt – Patte

+0

Der Weg der Antwort kann nicht in meinem Fall verwendet werden, weil ich viele ähnliche Formulare validieren möchte, die unterschiedliche Endpunkte haben, aber mein Modell ist eins für die gesamte Ansicht . Daher kann ich die Datenanmerkungsvalidierung nicht wirklich festlegen. Der zweite Weg ist ein Weg, der funktioniert und ich weiß es, aber ich habe mich gefragt, warum mein Weg nicht geht. Es sollte funktionieren, da ich die Veranstaltung stoppe, aber mir etwas fehlt. –

Verwandte Themen