Abbrechen / Überspringen / Abbrechen des Renderns einer Razor-Ansicht

8

Viele Entwickler machen das:

%Vor%

Ich bevorzuge es, "früh zurückzukehren", und tue dies stattdessen:

%Vor%

Was ist in einer ASP.NET-MVC Razor-Ansicht die richtige Methode zum Abbrechen / Überspringen / Abbrechen des Renderings einer Ansicht / Teilansicht? Zum Beispiel, wie konvertiere ich das:

%Vor%

zu etwas wie diesem:

%Vor%

Ich habe versucht, return zu verwenden und mit Request zu spielen, bin mir aber nicht sicher, wie sich dies auf den Prozess auswirkt. Was ist der richtige Weg, dies zu tun?

    
h bob 09.09.2014, 10:56
quelle

2 Antworten

15

Wie oben erwähnt, können Sie einfach ein return ausgeben.

Ich erinnere mich, dass cshtml-Dateien zur Laufzeit kompiliert werden, was sowohl den Inline-Code als auch den statischen HTML-Code beinhaltet. Das bedeutet, dass ich in der Theorie erwarten würde, dass jeder Code so wie er ist und in keiner Weise transformiert wird.

Also wenn du das tust:

%Vor%

Es funktioniert wie erwartet (zumindest für mich). Ich wollte nur wissen, ob dies zu unbeabsichtigten Nebenwirkungen führt.

    
h bob 09.09.2014, 12:14
quelle
4

Wenn du mit "abort" meinst, dass du etwas nach diesem Flag ausschließen willst, dann hast du nichts zu tun, benutze if , um solche Sektionen zu begrenzen (möglicherweise kann es sogar davon sein) Linie bis zum Ende der Datei). So:

%Vor%

Schnell wird es schwer zu verstehen sein, deshalb können Sie partielle Ansichten dafür verwenden (besonders wenn Blöcke, die Sie einschließen / ausschließen müssen, groß sind):

%Vor%

Wenn Sie die Seitenerstellung abbrechen / überspringen / abbrechen müssen (zB um auf eine andere Seite umzuleiten oder etwas völlig anderes anzuzeigen), so:

%Vor%

Dann machst du das an der falschen Stelle . Tun Sie es in Ihrem Controller, es wird die richtige Ansicht auswählen und die Ansichten werden sich einer solchen Logik nicht bewusst sein:

%Vor%

Warum nicht?

  • Weil Ansichten sich einer solchen Logik nicht bewusst sein sollten. Wenn Sie so etwas brauchen (CGI wie sequenzieller Fluss), sollten Sie MVC nicht verwenden, da es eine Komplexität hinzufügt, die Sie nicht benötigen.
  • Weil du es nicht kannst (außer jemand findet einen schrecklichen schmutzigen Hacky-Trick). MVC ist strukturiert, um eine Seite zu erstellen, wenn sie angezeigt werden soll (der Controller entscheidet, welche Seite und mit welchen Daten). Wenn dieses Gebäude startet, ist eine Ausgabe erforderlich (es sei denn, Sie werfen eine Ausnahme, um einen Fehler zu signalisieren, aber Sie sollten wirklich Ausnahmen vermeiden, um den Programmablauf zu handhaben, dann ...). Für kleine Wenns können Sie einfach die zuerst genannte Methode verwenden.

Zusammenfassend:

  

Was ist in einer ASP.NET-MVC Razor-Ansicht der richtige Weg, um das Rendern einer Ansicht / Teilansicht abzubrechen?

Es gibt keinen richtigen Weg, weil Sie es nicht tun müssen. Code in View muss die Seite rendern, es muss nicht entscheiden, welche Seite an den Client gesendet werden soll. Wenn Sie etwas anderes tun, dann sind Sie Verwenden von MVC, da es nicht verwendet werden sollte , es ist einfach nicht korrekt.

    
Adriano Repetti 09.09.2014 11:18
quelle

Tags und Links