Vermeiden Sie das doppelte Senden von Formularen in Asp.net MVC, indem Sie zweimal auf "Senden" klicken
Ich bin die Darstellung einer form in Asp.net MVC mit einem submit-button. Die Seite leitet nach erfolgreichem Eintrag dazu in der Datenbank. Im folgenden ist der code :-
[HttpPost]
public ActionResult Create(BrandPicView brandPic)
{
if (ModelState.IsValid)
{
if (!String.IsNullOrEmpty(brandPic.Picture.PictureUrl))
{
Picture picture = new Picture();
picture.PictureUrl = brandPic.Picture.PictureUrl;
db.Pictures.Add(picture);
brandPic.Brand.PictureId = picture.Id;
}
db.Brands.Add(brandPic.Brand);
db.SaveChanges();
return RedirectToAction("Index");
}
return View();
}
Aber während des Tests habe ich gesehen, dass, wenn die form angeklickt wird, wieder und wieder, die mehrere Einträge übermittelt und gespeichert in der Datenbank.
Wie kann ich sicherstellen, dass wenn das Formular abgesendet wurde einmal an den server, der dann keine Duplikate eingereicht werden.
InformationsquelleAutor der Frage Pankaj Upadhyay | 2012-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glaube ich nicht, das ist ziemlich ein Duplikat der Antwort auf die in den Kommentar, da der link für spring MVC, und diese Frage ist für .NET MVC.
Ich tatsächlich für ein paar Stunden auf diese eine Weile zurück, und kam mit der folgenden. Diese javascript-Haken schön mit einem dezenten jquery Validierung, und Sie können es anwenden, um jede form
<input type="submit"
. Beachten Sie, dass es verwendet die jquery 1.7 son
Funktion:Den setTimeouts benötigt werden. Andernfalls könnten Sie am Ende mit einer Taste ist deaktiviert, wenn geklickt, auch wenn die client-seitige Validierung fehl. Wir haben dies in eine Globale javascript-Datei, so dass Sie automatisch auf alle unsere Formulare.
InformationsquelleAutor der Antwort danludwig
Deaktivieren Sie die-Taste auf "Absenden" geklickt. Diese kann getan werden, mithilfe von JQuery/Java Script.
Blick auf dieses Beispiel auf, wie dies zu tun.
InformationsquelleAutor der Antwort Maheep
Deaktivieren die Taste ist in Ordnung per JavaScript-aber was ist, wenn der Benutzer es deaktiviert oder Sie zu umgehen? Wenn Sie client-Seite die Sicherheit, dann sichern Sie es mit der server-Seite. Ich würde das PRG-Muster hier.
InformationsquelleAutor der Antwort eth0
Können Sie ajax verwenden.BeginForm anstelle von html.BeginForm um dies zu erreichen, wenn Sie
OnSuccess
stattOnBegin
können Sie sicher sein, dass Ihre Methode erfolgreich ausführen und danach die Schaltfläche aktivieren, deaktivieren,mit ajax bleiben Siein der aktuellen Ansicht und können Sie aktualisieren Sie Ihre aktuelle Ansicht anstatt der Umleitung
und verwenden Sie diese jquery in Ihrer form:
vorsichtig sein, für die Verwendung von ajax zu nennen, diese Tasche in das Ende der Seite
InformationsquelleAutor der Antwort Alireza
Können Sie diese benutzen. Es umfasst unobtrusive jQuery Validierung.
JQuery validation bitte incllude
InformationsquelleAutor der Antwort Tančev Saša