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?
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:
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.
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%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.
Tags und Links asp.net-mvc-3 views conditional-compilation