MVC-Controller Wird zweimal aufgerufen

8

Ich habe einen Produkt-Controller mit Index-Aktion, der im Grunde das Ansichtsformular für die Post- und Indexaktion (Postaktionsverb) auf dem ProductController erstellt, die das Produkt im Grunde in db speichert, aber wenn Validierungsfehler auftreten, gebe ich eine Ansicht zurück ( Mymodel) Ich gebe RedirectToAction ("Created," Product ") zurück, aber aus irgendeinem seltsamen Grund, wenn ich in den Code einbringe, trifft es die Product Controller Aktion doppelt und nicht nur einmal. Daher hat das Produkt 2 Datensätze von einem.

%Vor%     
chugh97 01.07.2009, 12:36
quelle

4 Antworten

16

Manchmal habe ich Firebug gefunden, um dieses Verhalten zu verursachen. Deaktivieren Sie das Bedienfeld Skript , wenn Sie es installiert haben.

Erläuterung: In einigen Fällen ist Firebug nicht in der Lage, die Skriptquellen für die Anzeige im Skriptbereich abzurufen. In diesen Fällen initiiert es eine zweite Anfrage, um sie zu bekommen. Weitere Informationen hierzu finden Sie in 7401 . Dadurch wird das Problem gemindert und es wurde mit Firebug behoben 2.0.2.

    
mxmissile 01.07.2009, 16:54
quelle
12

Hier ist eine grundlegende Checkliste (kopiert von hier ):

  1. Überprüfen Sie, ob Sie ein Bild oder andere Elemente in der Ansicht mit einem haben leer src Attribut (zB <img src=”" /> ) oder src Attribut, das auf etwas verweist, das nicht mehr existiert. Du solltest besser Überprüfen Sie direkt in der "Seitenquelle" des Browsers, als in der Ansicht selbst aufgrund der Möglichkeit einiger "dynamischer" Probleme, wenn die Ansicht gerendert wird. Wenn du Finden Sie ein solches leeres Element in der HTML Quelle der Seite, das ist normalerweise trivial finde das gleiche Element in deiner View und behebe das Problem. Dies kann auch mit <link href=""> geschehen.

  2. Stellen Sie sicher, dass keine AJAX -Aufrufe auf eine leere URL verweisen (Browser interpretieren diese leere URL als aktuelle Seite und fordern die aktuelle Seite erneut an, indem sie die Aktion Controller ausführen einige Male ausführen).

  3. Sie haben vergessen, “false” aus dem Ereignishandler JavaScript click für einen Link oder eine Schaltfläche zurückzugeben, der / die einen AJAX -Aufruf ausführt. Wenn Sie “return false” vergessen haben, interpretiert der Browser einfach die Standardaktion des Links - regulär, nicht AJAX , ruft dieselbe Seite erneut auf)

  4. Manchmal können Firebug und YSlow [Firefox (FF) -Plugins] solche Probleme verursachen. Deaktivieren Sie sie nur vorübergehend in FF oder testen Sie sie mit einem anderen Browser.

  5. Achten Sie auf doppelte Filter, die Ihren Controller oder Ihre Action schmücken. (Das war mein Problem)

Leniel Macaferi 06.06.2012 21:35
quelle
2

Eine andere Lösung für diesen Fall ..

Ich hatte genau das gleiche Problem, das von Chrome ausgeführt und getestet wurde. Ich konnte es nicht debuggen, weil der zweite Anruf von (externem Anruf) kam. Ich habe es zufällig in Firefox und Internet Explorer getestet, wo es keinen doppelten Treffer gab.

Was auch immer böse war, ich habe Chrome-Cache gelöscht (alles !!!) und das Problem wurde behoben.

Ich hoffe, es wird einigen von euch helfen:)

    
Vaclav Elias 22.01.2014 13:30
quelle
0

Ich hatte ein ähnliches Problem mit einer Controller-Aktion, die ein Bild erzeugte, und ich sah es nur mit Firefox. Es gibt einen wirklich alten Bug, der das verursacht, der vermutlich noch da ist.

Ссылка

    
Sprintstar 24.07.2013 10:32
quelle

Tags und Links