Verwenden von Symbolen für bedingte Kompilierung in MVC-Ansichten

8

In "Eigenschaften" meines Projekts habe ich folgendes:

Ich möchte prüfen, ob TEST Symbol existiert, und erst dann einige Dinge tun. Also habe ich gemacht, was Sie auf dem Bild unten sehen und in der Klasse funktioniert es. Dies funktioniert jedoch nicht in den Ansichten.

Der Text in diesem Block ist grau, auch wenn TEST definiert ist!

Wie kann ich es funktionieren lassen, wenn TEST definiert ist?

    
ParPar 30.11.2011, 11:08
quelle

4 Antworten

10

Das Problem hängt mit der Tatsache zusammen, dass Sichten nur kompiliert werden, wenn Sie Ihre Anwendung ausführen, sodass das von Ihnen definierte Symbol% ​​co_de% nicht mehr vom Compiler angewendet wird, weil es keine Kenntnis davon hat.

Angenommen, Sie verwenden C #, müssen Sie den Compiler so konfigurieren, dass er das TEST -Symbol verwendet, wenn Sie die Ansichten erstellen, und dafür müssen Sie überschreiben Sie die Konfiguration in TEST mit folgendem Befehl:

%Vor%

Wichtig ist, dass Sie Web.config definieren. Für den Rest der Konfiguration müssen Sie sich an Ihre speziellen Anforderungen anpassen, z. B. zwischen .NET 2.0 oder .NET 4.0 wechseln.

Wenn Sie dies direkt in compilerOptions="/define:TEST" anwenden, wird es funktionieren, aber Web.config jedesmal definieren. Sie sollten also Web.config-Transformationen verwenden, damit das Symbol nur angewendet wird die richtigen Build-Konfigurationen.

    
João Angelo 30.11.2011, 11:52
quelle
9

Anstatt das Compiler-Flag in web.config gemäß der akzeptierten Antwort anzugeben (was auch erfordert, dass die Compiler-Version in web.config angegeben wird, was ein nicht standardmäßiger Speicherort ist), ging ich wie folgt vor:

Fügen Sie einer von meinen Modellen freigegebenen Basisklasse eine Methode hinzu

%Vor%

Verwenden Sie diese Methode in meinen Ansichten

%Vor%     
Eric J. 03.05.2012 19:24
quelle
2

Das von Ihnen festgelegte Symbol wird nur beim Kompilieren verwendet. Sonst existiert es nicht. Also, die DLL Ihres Webprojekts hat dieses nicht . Daher, wenn die Ansicht kompiliert wird. Das Symbol ist nicht da und es wird nicht so funktionieren, wie du es erwartest.

    
Andrew Barber 30.11.2011 11:13
quelle
1

Ich halte es nicht für möglich, bedingte Symbole in einer Ansicht zu verwenden, wie Andrew Barber bereits gesagt hat.

Aber Sie könnten bedingte Symbole im Modell verwenden:

%Vor%

Und dann überprüfen Sie den Wert in der Ansicht:

%Vor%     
Dangerous 30.11.2011 11:46
quelle