2016-04-11 9 views
0

In meinem Kontrolleurs habe ich eine bedingte Anweisung:Response.Write nicht richtig

if (oLevel.PostPreID == 2) 
      { 
       if (db.OL.Any(x => DbFunctions.TruncateTime(x.Date) == DbFunctions.TruncateTime(oLevel.FlightDate) && x.PostPreID == oLevel.PostPreID && x.AID == oLevel.AID && x.deleted == false)) 
       { 
        Response.Write(@"<script language='javascript'>alert('There is already a PostPreID for this AID for this Date!');</script>"); 
        return RedirectToAction("Index", new { id = oLevel.AID }); ; 
       }      
      } 

nun die bedingte Anweisung funktioniert perfekt. Das Problem ist die Response.Write Warnung .. Es erscheint nicht, wenn diese Bedingung ausgelöst wird. Irgendein Grund warum?

Jede Hilfe wird geschätzt.

Antwort

4

Dies ist nicht der richtige Weg, dies zu tun. Der Grund dafür, dass die Warnung nicht funktioniert, besteht darin, dass Sie unmittelbar nach dem Schreiben in die Antwort auf eine andere Ansicht umleiten, sodass der Browser die von Ihnen ausgegebene Skript-Markierung nicht darstellt.

Stattdessen muss die von der Indexaktion gerenderte Indexansicht das Skript basierend auf einem Abfragezeichenfolgenparameter bedingt ausgeben.

Pseudo-Code:

return RedirectToAction("Index", new { id = oLevel.AID, alreadyExists = true }); 

dann im Index Aktion/Ansicht, prüfen Sie, ob alreadyExists wahr ist gleich und wenn ja, haben diese Ansicht Ausgabe der Skript-Tag und die Warnmeldung.

+0

hab es geschafft! Danke! –

4

Weil Sie unmittelbar danach RedirectToAction() aufrufen. RedirectToAction() sendet eine HTTP 302-Weiterleitungsantwort an den Browser, sodass der Browser alles im Text (z. B. das Skript) ignoriert und stattdessen auf die neue URL umleitet.

Sie könnte lösen dies, indem Sie eine Ansicht hinzufügen, die es für ein zusätzliches Argument sieht machen Ihre Warnung vor (möglicherweise als Leuchtkasten, da Browser tun seltsame Dinge mit alert() in diesen Tagen) zu erzählen. Aber das scheint auch nicht richtig zu sein, denn dann könnte jeder die Warnung sehen, indem er die URL aufruft. Wahrscheinlich möchtest du etwas mehr in deinem Controller oder deiner Session machen.